我想观察属性 UITextfield.editing . 我正在使用此代码:
UITextfield.editing
self.money.rx_observe(Bool.self, "editing").subscribeNext { (value) in print("") }.addDisposableTo(disposeBag)
但是在运行过程中,它只执行一次 . 请问我该如何解决这个问题
不要观察 editing 属性,因为它定义为:'s not just a stored property. It':
editing
public var editing: Bool { get }
所以你不知道UIKit实际上是如何获得这个 Value 的 .
相反,使用 rx.controlEvent 并指定您感兴趣的控件事件,如下所示:
rx.controlEvent
textField.rx.controlEvent([.editingDidBegin, .editingDidEnd]) .asObservable() .subscribe(onNext: { _ in print("editing state changed") }) .disposed(by: disposeBag)
对于 RXSwift 3.0
textField.rx.controlEvent([.editingDidBegin,.editingDidEnd]) .asObservable() .subscribe(onNext: { print("editing state changed") }).disposed(by: disposeBag)
从RxSwift 4.0开始,有两个特定的控制事件: textDidBeginEditing 和 textDidEndEditing
textDidBeginEditing
textDidEndEditing
你可以像这样使用它:
textField.rx.textDidEndEditing .asObservable() .subscribe(onNext: { print("End of edition") }).disposed(by: disposeBag) textField.rx.textDidBeginEditing .asObservable() .subscribe(onNext: { print("Start of edition") }).disposed(by: disposeBag)
3 回答
不要观察
editing
属性,因为它定义为:'s not just a stored property. It':所以你不知道UIKit实际上是如何获得这个 Value 的 .
相反,使用
rx.controlEvent
并指定您感兴趣的控件事件,如下所示:对于 RXSwift 3.0
从RxSwift 4.0开始,有两个特定的控制事件:
textDidBeginEditing
和textDidEndEditing
你可以像这样使用它: