Ram*_*sad 4 uisearchbar ios swift uisearchcontroller swift3
我将应用程序从一个屏幕切换UISearchBar到UISearchController.这是一个tableview控制器.根据设计,我不应该首先在UI上保留搜索栏,除非它被激活,(通常将搜索栏保持为'tableHeaderView'是一种常见的做法).问题是,我有一个搜索按钮,当点击'搜索栏'应该被激活并成为第一响应者.
点击取消按钮时,应从UI中删除它.然而,当我点击导航栏上的"搜索栏按钮"时,UISearchController会激活,提供暗淡的背景但键盘不会出现.我需要再次点击搜索栏以在UI上显示键盘.
这是我的搜索栏按钮动作:
@IBAction func onTapSearch(_ sender: AnyObject) {
self.view.addSubview(searchController.searchBar)
searchController.isActive = true
searchController.becomeFirstResponder()
isSearchActive = true
self.navigationController?.setToolbarHidden(true, animated: false)
}
Run Code Online (Sandbox Code Playgroud)
我UISearchController在我的viewDidLoad方法中配置.如果您想要查看该部分代码,请告诉我,但这是通常的代码.我确认我不会在resignFirstResponder()任何地方调用任何方法.
试试这个,
只需更换此行,
searchController.becomeFirstResponder()
Run Code Online (Sandbox Code Playgroud)
有了这个,
searchController.searchBar.becomeFirstResponder()
Run Code Online (Sandbox Code Playgroud)
编辑,
func didPresentSearchController(_ searchController1: UISearchController) {
searchController1.searchBar.becomeFirstResponder()
}
Run Code Online (Sandbox Code Playgroud)
实现此委托方法并尝试.
| 归档时间: |
|
| 查看次数: |
685 次 |
| 最近记录: |