我如何使用Combine来跟踪UIViewRepresentable类中的UITextField更改?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何使用Combine来跟踪UIViewRepresentable类中的UITextField更改?相关的知识,希望对你有一定的参考价值。
我已经创建了一个自定义文本字段,我想利用Combine。为了在文本字段中的文本更改时得到通知,我目前使用自定义修饰符。它工作正常,但我希望此代码可以在CustomTextField结构中使用。
我的CustomTextField结构符合UIViewRepresentable。在此结构中,有一个名为Coordinator的NSObject类,它符合UITextFieldDelegate。
我已经在使用其他UITextField委托方法,但是找不到与我的自定义修饰符完全一样的方法。一些方法很接近,但是并没有完全按照我希望的方式表现。无论如何,我觉得最好将此新的自定义textFieldDidChange方法放在Coordinator类中。
这是我的自定义修饰符
private let textFieldDidChange = NotificationCenter.default
.publisher(for: UITextField.textDidChangeNotification)
.map { $0.object as! UITextField}
struct CustomModifer: ViewModifier {
func body(content: Content) -> some View {
content
.tag(1)
.onReceive(textFieldDidChange) { data in
//do something
}
}
}
我一直在观看有关Combine的视频,我想在我正在开发的新应用中开始使用它。我真的认为在这种情况下使用是正确的事情。
最近几天我一直在阅读有关Combine的内容,但仍然不确定如何实现此目的。我真的很喜欢一个例子。
提前感谢
类似的东西呢?
TextField
中的ContentView
发生更改时,此类会通知您。
class CustomModifier: ObservableObject {
var observedValue: String = "" {
willSet(observedValue) {
print(observedValue)
}
}
}
确保您在修饰符类上使用@ObservedObject
,并且可以看到更改。
struct ContentView: View {
@ObservedObject var modifier = CustomModifier()
var body: some View {
TextField("Input:", text: $modifier.value)
}
}
以上是关于我如何使用Combine来跟踪UIViewRepresentable类中的UITextField更改?的主要内容,如果未能解决你的问题,请参考以下文章
Combine + SwiftUI Form + RunLoop 导致表格视图呈现不可预测
SwiftUI + Combine:如何将数据分配给带有动画的模型