如何从以编程方式对UITextField文本属性进行更改中获得信号?通过使用rx.text,只有当用户通过键盘输入文本时才会报告信号。如果以编程方式设置textField.text,则信号不会触发。
这就是我使用rx.text的方式
(self.phoneNumberTextField.rx.text).orEmpty.subscribe(onNext: { [weak self] (phone) in
// do something
}).addDisposableTo(disposeBag)
self.phoneNumberTextField.text = "this is for test"谢谢!
发布于 2018-11-09 14:31:04
我也有同样的问题,显然sweeper的答案对我不起作用。因此,当我手动设置文本字段的文本时,我在文本字段上调用了sendActions方法
textField.text = "Programmatically set text." textField.sendActions(for: .valueChanged)
深入研究后,我意识到rx.text依赖于UIControlEvents,当您显式设置文本时,这些不会被触发。
希望这能有所帮助
发布于 2018-11-27 18:12:59
您可以在asObservable中添加controlEvents:
textField.rx.controlEvent([.editingChanged])
.asObservable().subscribe({ [unowned self] _ in
print("My text : \(self.textField.text ?? "")")
}).disposed(by: bag)发布于 2017-08-11 18:57:40
当你想观察键值观察兼容对象的属性时,只需调用observe!
下面是一个例子
textfield.rx.observe(String.self, "text").subscribe(onNext: { s in
print(s ?? "nil")
}).disposed(by: disposeBag)这将检测用户和您的代码对text所做的更改。
您不仅可以使用此技术来观察text,还可以观察具有键路径的任何其他属性!
https://stackoverflow.com/questions/45633173
复制相似问题