我注意到

textField.publisher(for: \.text)

在编辑完成时传递事件,但不针对每个字符/编辑更改传递事件。如何获得发布者,该发布者每次更改都会发送偶数?
在ReactiveSwift中,它将是
textField.reactive.continousTextValues()

在RxSwift中,它只是(How do you get a signal every time a UITextField text property changes in RxSwift)
textField.rx.text

我采取的方法:
  • 正在检查publisher(for:options:)方法,但是没有适当的选项可实现所需的结果。
  • 添加目标/ Action textField.addTarget(self, action: #selector(theTextFieldDidChange), for: .editingChanged)(UITextField text change event)
  • 通过接口(interface)构建器连接 Action ,与上一步基本相同,这导致额外的工作和困惑的代码。
  • 观看有关Combine的2019年WWDC视频。他们不是在处理文本字段,而是使用@Published变量,隐藏的值实际上是来自-的(或者我错过了吗?)。

  • 目前,我不知道如何执行此操作,因此我倾向于回到ReactiveSwift,但是在向后退一步之前,我想问一下您。

    最佳答案

    不幸的是,Apple没有为此添加发布者到UIKit,并且因为UIControl没有实现KVO,所以publisher(for:)发布者不能按预期工作。如果您可以在项目中添加依赖项,那么可以使用一些不错的UIControl发布者here

    或者,您可以实现自己的发布者来执行此操作,或者订阅文本字段以旧的方式进行更改。

    10-08 18:20