I have a simple TextField that binds to the state \'location\' like this,
TextField(\"Search Location\", text: $location)
I want to call a
From iOS 14, macOS 11, or any other OS contains SwiftUI 2.0, there is a new modifier called .onChange that detects any change of the given state:
struct ContentView: View {
@State var location: String = ""
var body: some View {
TextField("Your Location", text: $location)
.onChange(of: location) {
print($0) // You can do anything due to the change here.
// self.autocomplete($0) // like this
}
}
}
For older iOS and other SwiftUI 1.0 platforms, you can use onReceive:
.onReceive(location.publisher) {
print($0)
}
Note that it returns the change instead of the entire value. If you need the behavior the same as the onChange, you can use the combine and follow the answer provided by @pawello2222.