SwiftUI:如何在.searchable搜索栏仍聚焦时收起键盘?
解决方案:保留搜索栏聚焦状态下编程收起键盘
你可以通过调用UIKit的resignFirstResponder方法实现需求,该操作仅会收起键盘,不会关闭搜索栏或清空搜索文本,与点击键盘上的Search按钮效果一致。
实现步骤与代码示例
在SwiftUI视图中,通过自定义触发逻辑(比如按钮点击、条件判断)调用以下代码即可:
struct SearchableView: View { @State private var searchText = "" var body: some View { NavigationStack { // 你的主内容视图 List(1...10, id: \.self) { index in Text("列表项 \(index)") } .searchable(text: $searchText) .toolbar { // 示例:通过按钮触发收起键盘 Button("收起键盘") { UIApplication.shared.sendAction( #selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil ) } } } } }
原理说明
UIApplication.shared.sendAction(_:to:from:for:)会向应用的响应链发送resignFirstResponder消息,当前作为第一响应者的搜索输入框会放弃该身份,从而收起键盘,但搜索栏仍保持激活状态(不会退出搜索模式、不会清空已输入的文本)。
内容的提问来源于stack exchange,提问作者Sajjad Sarkoobi
相关产品推荐
相关产品推荐

