I'm implementing autocomplete using .searchSuggestions. Since my autocomplete needs communication with the server, I'm adding a separate state for autocomplete and change the state in .onChange(of: searchText). I want the suggestions be dismissed when any of them are tapped. This worked well on iOS 16.0, but not on iOS 16.4 and 16.5. On iOS 16.4, when a suggestion is tapped, it replaces the search text, but it also makes new suggestions, so the suggestions are not dismissed.
This difference does not appear when .searchSuggestions does not depend on a separate state. Would there be any workarounds?
Here's the minimum reproducible example (modified from an example in https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-a-search-bar-to-filter-your-data):
import SwiftUI
struct ContentView: View {
let names = ["Holly", "Josh", "Rhonda", "Ted"]
@State private var searchText = ""
@State private var searchResults = [String]()
var body: some View {
NavigationStack {
List {
ForEach(searchResults, id: \.self) { name in
NavigationLink {
Text(name)
} label: {
Text(name)
}
}
}
.navigationTitle("Contacts")
}
.onChange(of: searchText) { _ in
searchResults = names.map { $0 }
// In my app,
// Task {
// searchResults = await retrieveFromServer()
// }
}
.searchable(
text: $searchText,
placement: .navigationBarDrawer(displayMode: .always)
)
.searchSuggestions {
// ForEach(searchResultsComputed, id: \.self) works well on both versions
ForEach(searchResults, id: \.self) { result in
Text("Are you looking for \(result)?").searchCompletion(result)
}
}
}
var searchResultsComputed: [String] {
names.map { $0 }
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
and here's the result: https://youtu.be/1t4H6AT3y5A
Post
Replies
Boosts
Views
Activity
App Store Connect displays this warning after my developer account is switched from an individual account to an organizational account. My contact information for the app review is already filled in on the version detail page as shown below (My app is already approved by App Store), is there another text field I have to fill in, or is it just a bug?