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

iOS搜索栏输入字符后键盘自动消失问题求助

问题解决方法

你的问题根源在于searchBar(_:textDidChange:)方法里每次文本变化都调用searchBar.becomeFirstResponder(),这会干扰键盘的正常响应逻辑,导致输入字符后键盘被强制重置收起。

修改步骤:

  • 移除textDidChange方法中的searchBar.becomeFirstResponder()调用,该方法只需要在开始编辑时调用一次(你已经在searchBarTextDidBeginEditing里做了)。
  • 简化过滤数据的逻辑,用Swift高阶函数替代循环,让代码更简洁高效。

修改后的代码:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    filteredData = []
    
    if searchText.isEmpty {
        filteredData = data
    } else {
        // 用filter简化过滤逻辑
        filteredData = data.filter { item in
            item.lowercased().contains(searchText.lowercased())
        }
    }
    
    selectionTableView.reloadData()
}

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    searchBar.becomeFirstResponder()
}

补充说明:

  • 当搜索文本为空时直接赋值原数据,避免不必要的循环。
  • 使用filter替代手动循环,既符合Swift的写法习惯,也减少了代码出错概率。
  • 只在开始编辑时让搜索栏成为第一响应者,后续文本变化时不需要重复调用,键盘会保持正常的输入状态。

内容的提问来源于stack exchange,提问作者Nandini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:28:12