如何使用 RxSwift 观察 UITextField 中的文本变化?

Posted

技术标签:

【中文标题】如何使用 RxSwift 观察 UITextField 中的文本变化?【英文标题】:How to observe text change in UITextField using RxSwift? 【发布时间】:2018-10-25 07:21:34 【问题描述】:

我想使用 RxSwift 观察 UITextField.text 属性的任何变化。

我尝试使用rx.text 属性,但它仅在我设置text 属性时调用:textField.text = "",但在我输入文本时不起作用。

我也尝试使用rx.observe(String.self, "text"),但结果相同。

如何观察 UITextField 中文字的变化?

【问题讨论】:

【参考方案1】:

要观察UITextField 中文本的任何变化,您可以为Reactive 类创建扩展:

public extension Reactive where Base: UITextField 

    public var textChange: Observable<String?> 
        return Observable.merge(self.base.rx.observe(String.self, "text"),
                                self.base.rx.controlEvent(.editingChanged).withLatestFrom(self.base.rx.text))
    


【讨论】:

以上是关于如何使用 RxSwift 观察 UITextField 中的文本变化?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RxSwift 中使用 EventConvertible 创建客户观察者事件?

使用 RxSwift 的异步任务和多个观察者

如何在 RxSwift 中观察对象的属性?

在 RxCocoa/RxSwift 中,如何观察 BehaviorRelay<[object]> 数组大小发生变化

如何在 RxSwift 中将值附加到观察到的数组

RxSwift:将可完成映射到单个可观察?