我将我的应用从UISearchBar
切换到UISearchController
一个屏幕。它是一个tableview控制器。根据设计,我不应该首先在UI上保留搜索栏,除非它被激活,(通常情况下,将搜索栏保持为' tableHeaderView')是一种常见的做法。问题是,我有一个搜索按钮,当点击'搜索栏'应该被激活并成为第一响应者。
点击取消按钮时,应从UI中删除。但是,当我点击“搜索栏按钮”时,在导航栏上,UISearchController
被激活,提供暗淡的背景但键盘不会出现。我需要再次点击搜索栏,将键盘放在用户界面上。
这是我的搜索栏按钮操作:
@IBAction func onTapSearch(_ sender: AnyObject) {
self.view.addSubview(searchController.searchBar)
searchController.isActive = true
searchController.becomeFirstResponder()
isSearchActive = true
self.navigationController?.setToolbarHidden(true, animated: false)
}
我在UISearchController
方法中配置viewDidLoad
。如果您想要查看该部分代码,请告诉我,但它是常用代码。我确认我没有在任何地方调用resignFirstResponder()
方法。
答案 0 :(得分:6)
试试这个,
只需替换此行,
searchController.becomeFirstResponder()
通过以下方式
searchController.searchBar.becomeFirstResponder()
修改,强>
func didPresentSearchController(_ searchController1: UISearchController) {
searchController1.searchBar.becomeFirstResponder()
}
实现此委托方法并尝试。