我有一个简单的文本字段,可以像这样绑定到州"位置",

TextField("Search Location", text: $location)

我想在此字段每次更改时调用一个函数,如下所示:

TextField("Search Location", text: $location) {
   self.autocomplete(location)
}

然而,这不起作用.我知道有回调,onEditingChanged-然而,这似乎只有在字段被聚焦时才会触发.

如何在每次更新字段时调用此函数?

推荐答案

可以使用自定义闭包创建绑定,如下所示:

struct ContentView: View {
    @State var location: String = ""

    var body: some View {
        let binding = Binding<String>(get: {
            self.location
        }, set: {
            self.location = $0
            // do whatever you want here
        })

        return VStack {
            Text("Current location: \(location)")
            TextField("Search Location", text: binding)
        }

    }
}

Ios相关问答推荐

Flutter应用程序无法使用IOS/Swift的蓝牙核心库发现某些外围设备

SwiftUI文本编辑器内部滚动填充,无需文本裁剪

使用SWIFT传输表示时的条件文件表示格式

如何在SwiftUI中顺时针和逆时针两个方向应用旋转效果?

如何使用参与者允许并行读取,但阻止对SWIFT中资源的并发读取和写入?

SwiftUI 故障/错误 - 在 LazyVStack 和 ScrollView 中使用 AVPlayer 时状态栏不显示

部分保留 UITextField 中的占位符

如何使用 pushViewController 从 UIHostingController 的 SwiftUI 视图中推送 ViewController?

在我的 M1 上出现 Architecture arm64 问题,因此我无法运行我的旧项目

如何在 SwiftUI 中只显示一次随机数组的项目?

Xcode 13.4.1 (13F100)Command CodeSign 失败,退出代码非零我应该删除哪个证书?

Swift 5.7 - 使存在的任何协议符合 Hashable

滑动以返回特定的 SwiftUI 视图

改变 UIView 位置的简单方法?

iOS:使用 UIView 的 'drawRect:' 与其层的委托 'drawLayer:inContext:'

UIView 和 initWithFrame 以及一个 NIB 文件.如何加载 NIB 文件?

故事板中的 colored颜色 与 UIColor 不匹配

iOS 应用程序中的手动语言 Select (iPhone 和 iPad)

iOS:如何从 URL 调试新启动应用程序

测试目标 X 遇到错误(提前意外退出,操作从未完成 bootstrap - 不会try 重新启动