Eth*_*ung 9 ios swift rx-swift
如何通过编程更改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"
Run Code Online (Sandbox Code Playgroud)
谢谢!
我遇到了同样的问题,显然清道夫的答案对我没有用。所以这就是我做的事情当我手动设置文本字段的文本时,我在文本字段上调用sendActions方法
textField.text = "Programmatically set text."
textField.sendActions(for: .valueChanged)
在进行更多的挖掘时,我意识到,rx.text
取决于UIControlEvents
并且在您显式设置文本时不会触发这些依赖。
希望这可以帮助
当您希望观察键值观察兼容对象的属性时,只需调用即可observe
!
这是一个例子
textfield.rx.observe(String.self, "text").subscribe(onNext: { s in
print(s ?? "nil")
}).disposed(by: disposeBag)
Run Code Online (Sandbox Code Playgroud)
这将检测text
用户和代码所做的更改.
您可以使用此技术不仅观察text
,还可以使用具有关键路径的任何其他属性!
您可以将controlEvents添加为asObservable:
textField.rx.controlEvent([.editingChanged])
.asObservable().subscribe({ [unowned self] _ in
print("My text : \(self.textField.text ?? "")")
}).disposed(by: bag)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5103 次 |
最近记录: |