web-dev-qa-db-ja.com

RxSwiftでUITextField.editingを観察する

プロパティを観察したいUITextfield.editing。私はこのコードを使用しています:

self.money.rx_observe(Bool.self, "editing").subscribeNext { (value) in
    print("")
}.addDisposableTo(disposeBag)

しかし、実行中に実行されるのは1回だけです。これをどうやって解決しますか?

15
C.liu

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)
32
solidcell

RXSwift 3.の場合

textField.rx.controlEvent([.editingDidBegin,.editingDidEnd])
        .asObservable()
        .subscribe(onNext: {
            print("editing state changed")
        }).disposed(by: disposeBag)
12
Chirag Desai

RxSwift 4.0以降、2つの特定の制御イベントがあります: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)
0
Kevin ABRIOUX