search - SwiftUI - 单击取消时执行操作 - .searchable 函数
问题描述
使用该.searchable(text: $text)
功能时,搜索时搜索栏中会出现一个取消按钮。
单击取消按钮时有什么方法可以执行操作?我想在点击取消时调用一个函数,但无法弄清楚点击取消时如何执行操作。
Apple 文档没有提到任何关于此的内容。回到 UIKit 就func searchBarCancelButtonClicked(searchBar: UISearchBar) {
可以做到这一点。
解决方案
您可以使用isSearching
环境值 ( https://developer.apple.com/documentation/swiftui/environmentvalues/issearching?changes=_6 ) 来查看是否正在执行搜索。要在取消时执行操作,您可以观察从true
usingfalse
的变化onChange
:
struct ContentView: View {
@State private var searchText = ""
@Environment(\.dismissSearch) var dismissSearch
var body: some View {
NavigationView {
VStack {
ChildView()
Text("Searching for \(searchText)")
}
.searchable(text: $searchText)
.navigationTitle("Searchable Example")
}
}
}
struct ChildView : View {
@Environment(\.isSearching) var isSearching
var body: some View {
Text("Child")
.onChange(of: isSearching) { newValue in
if !newValue {
print("Searching cancelled")
}
}
}
}
可能需要注意的是,它似乎isSearching
必须在searchable
修饰符的子视图中才能正常工作
推荐阅读
- javascript - HighCharts - 在 stockChart 中显示最后一个值的 dataLabel
- r - 基于两列中的值的交叉制表
- python - 给定范围内所有数字的总和除以 3 和 5,并将数字范围显示为列表
- ios - iOS:如何填写 pdf 表单
- maven - Maven - 如何替换其他位置的任何文件中的值?
- python - 如何在 Windows 上使用 Cython 编译 CUDA C 代码?
- python - Tkinter GUI:用标签替换一行中的一个按钮而不改变行的大小。哪怕是一毫米
- c# - 使用另一个类的方法而不需要使用类名
- swiftui - 未使用 SwiftUI 从资产中加载颜色
- ios - SwiftUI 如何实现暗模式切换和刷新所有视图