【发布时间】:2021-04-26 08:31:19
【问题描述】:
我有两个文本字段。我想在点击第一个文本字段时打开一个底页。另一个文本字段定期接受用户输入。
这是我在produklistrikDropdown 文本字段与edittingDidBegin 时的触发器。
produkListrikDropDown.rx.controlEvent(.editingDidBegin)
.subscribe(onNext:{
self.dismissKeyboard()
print("produk Listrik Field did begin")
self.viewModel.showProdukListrik()
})
.disposed(by: disposeBag)
在我从底部表格中选择产品后,它只需将字段的文本更改为我选择的文本。
viewModel.currentProdukListBehaviorSubject
.map{$0?.rawValue}
.subscribe(onNext: { [unowned self] in
if produkListrikDropDown.text != $0 {
produkListrikDropDown.text = $0
}
})
.disposed(by: disposeBag)
这是我的第二个文本字段配置。只是一个接收用户输入的常规文本字段。
idPelangganField.rx.text
.bind(to: viewModel.currentIdPelangganBehaviorSubject)
.disposed(by: disposeBag)
发生了什么
当我点击第一个文本字段并选择一个产品时,它的表现还不错。 但是当我点击第二个文本字段并返回第一个文本字段时,第一个文本字段上的 edittingDidBegin 触发了两次。这在 IOS 12.4 上不会发生。
您可以克隆此 repo 以重现问题 https://github.com/Bobbyphtr/TextfieldDidEdittingProblem/tree/master
【问题讨论】:
-
你把代码放在什么函数里?你知道文本字段有一个
inputView吗?您可能可以使用它来使您的代码更简单。 -
@DanielT。感谢您的建议,我会考虑使用
inputView进行进一步的实施。但是,即使我使用了inputView,我认为它们会被触发两次,与所述问题相同。 -
你把代码放在什么函数里?
-
@DanielT。我把上面的所有代码都放在
viewDidLoad函数中。如果这不是您要找的答案,请详细说明,以便我提供更多所需的代码。 -
@DanielT。感谢您告诉我,我正在尝试重新创建此问题并将其上传到 github,以便您尝试找出答案。
标签: ios swift uitextfield rx-swift