首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UITextField EditingDidBegin在IOS 14.4上触发两次

UITextField EditingDidBegin在IOS 14.4上触发两次
EN

Stack Overflow用户
提问于 2021-04-26 08:31:19
回答 2查看 467关注 0票数 2

我有两个文本框。当第一个文本字段被点击时,我想打开一个底部页。另一个textfield定期接受用户输入。

produklistrikDropdown文本字段带有edittingDidBegin时,这就是我的触发器。

代码语言:javascript
运行
复制
produkListrikDropDown.rx.controlEvent(.editingDidBegin)
            .subscribe(onNext:{
                self.dismissKeyboard()
                print("produk Listrik Field did begin")
                self.viewModel.showProdukListrik()
            })
            .disposed(by: disposeBag)

在我从底片中选择一个产品后,它只需将字段的文本更改为我所选择的文本。

代码语言:javascript
运行
复制
viewModel.currentProdukListBehaviorSubject
            .map{$0?.rawValue}
            .subscribe(onNext: { [unowned self] in
                if produkListrikDropDown.text != $0 {
                    produkListrikDropDown.text = $0
                }
            })
            .disposed(by: disposeBag)

这是我的第二个textfield配置。只是一个接收用户输入的常规文本字段。

代码语言:javascript
运行
复制
idPelangganField.rx.text
            .bind(to: viewModel.currentIdPelangganBehaviorSubject)
            .disposed(by: disposeBag)

发生了什么

当我点击第一个文本框并选择一个产品时,它的表现很好。但是当我点击第二个文本字段并点击第一个文本框时,第一个文本框上的edittingDidBegin触发了两次。这种情况在IOS 12.4上不会发生。

您可以克隆这个回购程序来重现问题https://github.com/Bobbyphtr/TextfieldDidEdittingProblem/tree/master

EN

Stack Overflow用户

回答已采纳

发布于 2021-04-30 01:45:47

我找到了一种更好的方法,而不牺牲textfield的使用。就像丹尼尔T.说的那样,我们可以在上面使用一个点击手势识别器。我为UITextField放置了一个标记手势识别器,并将其设置为接收touch down事件。它消除了textFieldShouldBeginEditting(_:)的任何副作用,也不使用任何RxSwift进行调用。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67263289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档