如何使用可搜索修饰符检测取消按钮的点击

Bep*_*pex 7 searchable ios15

我使用 iOS15 的 SwiftUI 可搜索修饰符通过 onSubmit 修饰符进行搜索以发送 HTTP 请求,并且我还想在用户点击“取消”按钮时重置初始列表;如果我找到了 onCancel 修饰符,我将不胜感激。有人卖过这个吗?

Rav*_*avi 10

.searchable 附带了两个环境值,分别是 isSearching 和missSearch。

@Environment(\.isSearching) private var isSearching: Bool
@Environment(\.dismissSearch) private var dismissSearch
Run Code Online (Sandbox Code Playgroud)

如果我们有如下的可搜索代码

.searchable(text: self.$searchText)
Run Code Online (Sandbox Code Playgroud)

然后我们可以检测到搜索被取消,如下面的代码片段所示。

.onSubmit(of: .search) {
    //Search triggered on tap of search button in keyboard
}
.onChange(of: searchText) { value in
    if searchText.isEmpty && !isSearching {
        //Search cancelled here
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试使用这种方法,同时苹果希望在即将发布的版本中为我们提供一些 .onCancel(.search) 修饰符。