我有一个简单的TextField,它像这样绑定到状态'location',
TextField("Search Location", text: $location)
字符串
我想在每次这个字段改变时调用一个函数,类似这样:
TextField("Search Location", text: $location) {
self.autocomplete(location)
}
型
我知道有回调函数,onEditingChanged -但是这似乎只在字段被聚焦时被触发。
如何让这个函数在每次更新字段时调用?
6条答案
按热度按时间flseospp1#
SwiftUI 2.0
从iOS 14,macOS 11或任何其他包含SwiftUI 2.0的操作系统中,有一个名为
.onChange
的新修改器可以检测给定state
的任何更改:字符串
SwiftUI 1.0
对于较旧的iOS和其他SwiftUI 1.0平台,您可以使用
onReceive
:注意,它返回的是更改而不是整个值。如果你需要和
onChange
一样的行为,可以使用合并,按照@pawello2222提供的答案操作。owfi6suc2#
你可以创建一个带有自定义闭包的绑定,像这样:
字符串
wmvff8tz3#
如果您需要使用
ViewModel
,另一种解决方案可能是:字符串
nx7onnlm4#
iOS 13+
使用
onReceive
:字符串
pw9qyyiw5#
虽然其他答案可能会起作用,但这一个对我来说是有效的,我需要倾听文本的变化并对其做出React。
第一步创建一个扩展函数。
字符串
现在在TextField中对绑定调用change,如下所示。
型
来源:HackingWithSwift
5lwkijsr6#
我发现最有用的是TextField有一个名为onEditingChanged的属性,当编辑开始和编辑完成时都会调用它。
字符串