Observing UITextField.editing with RxSwift
Don't observe the editing
property, because it's not just a stored property. It's defined as:
public var editing: Bool { get }
So you don't know how UIKit is actually getting that value.
Instead, use rx.controlEvent
and specify the control events you're interested in, like so:
textField.rx.controlEvent([.editingDidBegin, .editingDidEnd]) .asObservable() .subscribe(onNext: { _ in print("editing state changed") }) .disposed(by: disposeBag)
Since RxSwift 4.0, there is two specific control events : textDidBeginEditing
and textDidEndEditing
You can used it like this :
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)