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
相关产品推荐
相关产品推荐

