Je souhaite observer la propriété UITextfield.editing
. J'utilise ce code:
self.money.rx_observe(Bool.self, "editing").subscribeNext { (value) in
print("")
}.addDisposableTo(disposeBag)
Mais en cours d'exécution, il n'est exécuté qu'une seule fois. Comment résoudre ce problème , s'il vous plaît
N'observez pas la propriété editing
, car ce n'est pas seulement une propriété stockée. Il est défini comme:
public var editing: Bool { get }
Vous ne savez donc pas comment UIKit obtient réellement cette valeur.
Utilisez plutôt rx.controlEvent
et spécifiez les événements de contrôle qui vous intéressent, comme ceci:
textField.rx.controlEvent([.editingDidBegin, .editingDidEnd])
.asObservable()
.subscribe(onNext: { _ in
print("editing state changed")
})
.disposed(by: disposeBag)
Pour RXSwift 3.
textField.rx.controlEvent([.editingDidBegin,.editingDidEnd])
.asObservable()
.subscribe(onNext: {
print("editing state changed")
}).disposed(by: disposeBag)
Depuis RxSwift 4.0, il existe deux événements de contrôle spécifiques: textDidBeginEditing
et textDidEndEditing
Vous pouvez l'utiliser comme ceci:
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)