繁体   English   中英

使用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开始,有两个特定的控件事件: textDidBeginEditingtextDidEndEditing

你可以像这样使用它:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM