小编the*_*utz的帖子

Swift Combine - 如何获得为 UITextField 的文本属性的每个字符更改提供事件的发布者

我注意到

textField.publisher(for: \.text)
Run Code Online (Sandbox Code Playgroud)

在编辑完成时传递事件,但不是针对每个字符/编辑更改。我如何获得一个发布者,它会为每次更改发送事件?在 ReactiveSwift 中,它将是

textField.reactive.continousTextValues()
Run Code Online (Sandbox Code Playgroud)

而在 RxSwift 中,它只是(如何在 RxSwift 中每次 UITextField 文本属性更改时获得信号

textField.rx.text
Run Code Online (Sandbox Code Playgroud)

我采取的方法:

  • 检查publisher(for:options:)方法,但对于所需的结果没有合适的选项。
  • 添加目标/操作textField.addTarget(self, action: #selector(theTextFieldDidChange), for: .editingChanged)UITextField 文本更改事件
  • 通过接口构建器连接操作,与上一步基本相同,这两者都会导致额外的工作和混乱的代码。
  • 观看 2019 年关于 Combine 的 WWDC 视频。他们没有处理文本字段,而是使用@Published变量,隐藏值实际上来自 - (或者我错过了什么?)。

我目前不知道如何做到这一点,我觉得有回到 ReactiveSwift 的趋势,但我想问你,在退步之前。

uitextfield ios swift combine

7
推荐指数
3
解决办法
2853
查看次数

标签 统计

combine ×1

ios ×1

swift ×1

uitextfield ×1