使用RxSwift观察UITextField.editing

C.l*_*liu 17 ios swift rx-swift reactivex rx-cocoa

我想观察房产UITextfield.editing.我正在使用此代码:

self.money.rx_observe(Bool.self, "editing").subscribeNext { (value) in
    print("")
}.addDisposableTo(disposeBag)
Run Code Online (Sandbox Code Playgroud)

但是在运行过程中,它只执行一次.请问我该如何解决这个问题

sol*_*ell 34

不要观察editing财产,因为它不仅仅是一个存储的财产.它被定义为:

public var editing: Bool { get }
Run Code Online (Sandbox Code Playgroud)

所以你不知道UIKit实际上是如何获得这个价值的.

相反,使用rx.controlEvent并指定您感兴趣的控件事件,如下所示:

textField.rx.controlEvent([.editingDidBegin, .editingDidEnd])
    .asObservable()
    .subscribe(onNext: { _ in
        print("editing state changed")
    })
    .disposed(by: disposeBag)
Run Code Online (Sandbox Code Playgroud)


Chi*_*sai 12

适用于RXSwift 3.0

textField.rx.controlEvent([.editingDidBegin,.editingDidEnd])
        .asObservable()
        .subscribe(onNext: {
            print("editing state changed")
        }).disposed(by: disposeBag)
Run Code Online (Sandbox Code Playgroud)