поэтому я пытаюсь создать панель поиска, которая не запускает код, отображающий результаты, пока пользователь не перестанет печатать в течение 2 секунд (AKA он должен сбрасывать своего рода таймер, когда пользователь вводит новый символ). Я пробовал использовать .onChange () и AsyncAfter DispatchQueue, и он не работает (я думаю, я понимаю, почему текущая реализация не работает, но я не уверен, что я вообще решаю эту проблему правильно) ...
struct SearchBarView: View {
@State var text: String = ""
@State var justUpdatedSuggestions: Bool = false
var body: some View {
ZStack {
TextField("Search", text: self.$text).onChange(of: self.text, perform: { newText in
appState.justUpdatedSuggestions = true
DispatchQueue.main.asyncAfter(deadline: .now() + 3, execute: {
appState.justUpdatedSuggestions = false
})
if justUpdatedSuggestions == false {
//update suggestions
}
})
}
}
}