所以我正在尝试制作一个搜索栏,直到用户停止输入两秒钟后才运行显示结果的代码(也就是说,当用户输入新字符时,应该重置某种计时器)。我尝试使用.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
}
})
}
}
}