我使用iOS15的SwiftUI可搜索修饰符通过onSubmit修饰符进行搜索以发送HTTP请求,并且我还想在用户点击“取消”按钮时重置初始列表; 如果我找到了 onCancel 修饰符,我将不胜感激。 有人卖过这个吗
.searchable 附带两个环境值,分别是 isSearching 和 DismissSearch。
@Environment(\.isSearching) private var isSearching: Bool
@Environment(\.dismissSearch) private var dismissSearch
如果我们有如下的可搜索代码
.searchable(text: self.$searchText)
然后我们可以检测到搜索被取消,如下面的代码片段。
.onSubmit(of: .search) {
//Search triggered on tap of search button in keyboard
}
.onChange(of: searchText) { value in
if searchText.isEmpty && !isSearching {
//Search cancelled here
}
}
尝试使用这种方法,同时苹果希望在即将发布的版本中为我们提供一些 .onCancel(.search) 修饰符。
除了上面的答案
当查询变量是视图模型属性时,用户单击“取消”按钮不会让您更改最后一个查询文本值。我在下面发现的内容适用于此用例。
.onChange(of: viewModel.searchQuery) { _, newValue in
if newValue.isEmpty || !isSearching {
Task {
await viewModel.fetch()
}
}
}