You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:16:04