让搜索栏成为第一响应者
Posted
技术标签:
【中文标题】让搜索栏成为第一响应者【英文标题】:Make Search Bar Become First Responder 【发布时间】:2017-01-15 01:40:29 【问题描述】:我在UINavigationBar
中有一个UISearchController
。用户必须点击UIBarButtonItem
,我在其中实例化一个新的UIViewController
,然后呈现它,以便开始搜索。
class ViewController: UIViewController
var searchController: UISearchController!
override func viewDidLoad()
super.viewDidLoad()
setupSearchController()
func setupSearchController()
searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.delegate = self
searchController.searchResultsUpdater = self
searchController.searchBar.showsCancelButton = true
searchController.dimsBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false
definesPresentationContext = true
navigationItem.titleView = searchController.searchBar
我之前做了很多研究,但仍然无法找到解决方案......
非常感谢帮助使搜索控制器成为第一响应者。
【问题讨论】:
【参考方案1】:使UISearchBar
成为主线程上的第一响应者是solution。
override func viewDidAppear(_ animated: Bool)
super.viewDidAppear(animated)
DispatchQueue.main.async
self.searchController.searchBar.becomeFirstResponder()
【讨论】:
太棒了!使用此解决方案,无论 ios 版本如何,它都能正常工作。 这也适用于 iOS 13。 Fking Apple 及其无意义的实现。 它在 iOS 12 中崩溃,但在 13 中正常。以上是关于让搜索栏成为第一响应者的主要内容,如果未能解决你的问题,请参考以下文章
UISearchController 需要额外点击才能成为第一响应者