Observing UITextField.editing with RxSwift Observing UITextField.editing with RxSwift ios ios

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)


For RXSwift 3.0

textField.rx.controlEvent([.editingDidBegin,.editingDidEnd])        .asObservable()        .subscribe(onNext: {            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)