使用 RxSwift 观察 UITextField.editing
Observing UITextField.editing with RxSwift
我要观察属性UITextfield.editing
。我正在使用此代码:
self.money.rx_observe(Bool.self, "editing").subscribeNext { (value) in
print("")
}.addDisposableTo(disposeBag)
但是在运行的过程中,只执行了一次。怎么解决,求教
不要观察 editing
属性,因为它不仅仅是一个存储的 属性。它被定义为:
public var editing: Bool { get }
所以你不知道 UIKit 实际上是如何获得那个值的。
相反,请使用 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
你可以这样使用它:
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)
我要观察属性UITextfield.editing
。我正在使用此代码:
self.money.rx_observe(Bool.self, "editing").subscribeNext { (value) in
print("")
}.addDisposableTo(disposeBag)
但是在运行的过程中,只执行了一次。怎么解决,求教
不要观察 editing
属性,因为它不仅仅是一个存储的 属性。它被定义为:
public var editing: Bool { get }
所以你不知道 UIKit 实际上是如何获得那个值的。
相反,请使用 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
你可以这样使用它:
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)