如何手动执行 UITextField 编辑操作,使用 rx 观察到更改?
How to manually perform action for UITextField editing changed observed with rx?
我只是添加了两个可观察值:
mainView.textField.rx.text.orEmpty.bind(to: viewModel.searchPhrase).disposed(by: bag)
mainView.textField.rx.controlEvent(.editingChanged).asObservable().subscribe(onNext: { [weak self] in
print("voilala")
}).disposed(by: bag)
现在我想从代码中调用操作来执行订阅和绑定。可能吗?
简单:
view.textField.insertText("someText")
Reactive.text
是一个 ControlProperty
,所以它既是 ObserverType
又是一个 ObservableType
(至少在 RxSwift 5.0 中是这样)。
这意味着你可以绑定它。像您一样阅读:
mainView.textField.rx.text.orEmpty.bind(to: viewModel.searchPhrase).disposed(by: bag)
...或写成:
viewModel.searchPhrase.bind(to: mainView.textField.rx.text).disposed(by: bag)
编辑:
显然,您不必绑定即可编辑文本。您可以执行一次性更新:
mainView.textField.rx.text.onNext("someText")
正确答案是 "don't do that." 应该将导致您的 "voilala" 打印的任何触发器合并到源代码中,这样您就不需要将您的视图用作您的一部分型号。
如果您只是想测试一些输入,那么您可以触发一个控制事件,就像触发任何 UIControl 事件一样,sendAction(_:to:for:)
调用文本字段本身。
我只是添加了两个可观察值:
mainView.textField.rx.text.orEmpty.bind(to: viewModel.searchPhrase).disposed(by: bag)
mainView.textField.rx.controlEvent(.editingChanged).asObservable().subscribe(onNext: { [weak self] in
print("voilala")
}).disposed(by: bag)
现在我想从代码中调用操作来执行订阅和绑定。可能吗?
简单:
view.textField.insertText("someText")
Reactive.text
是一个 ControlProperty
,所以它既是 ObserverType
又是一个 ObservableType
(至少在 RxSwift 5.0 中是这样)。
这意味着你可以绑定它。像您一样阅读:
mainView.textField.rx.text.orEmpty.bind(to: viewModel.searchPhrase).disposed(by: bag)
...或写成:
viewModel.searchPhrase.bind(to: mainView.textField.rx.text).disposed(by: bag)
编辑: 显然,您不必绑定即可编辑文本。您可以执行一次性更新:
mainView.textField.rx.text.onNext("someText")
正确答案是 "don't do that." 应该将导致您的 "voilala" 打印的任何触发器合并到源代码中,这样您就不需要将您的视图用作您的一部分型号。
如果您只是想测试一些输入,那么您可以触发一个控制事件,就像触发任何 UIControl 事件一样,sendAction(_:to:for:)
调用文本字段本身。