【发布时间】:2018-08-18 00:04:39
【问题描述】:
在viewDidLoad():
searchController = UISearchController(searchResultsController: nil)
let cancelButtonAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(cancelButtonAttributes, for: .normal)
searchController?.dimsBackgroundDuringPresentation = false
searchController?.searchResultsUpdater = self
searchController?.delegate = self
searchController?.searchBar.tintColor = UIColor.black
searchController?.searchBar.barTintColor = UIColor(white: 0.9, alpha: 0.9)
searchController?.searchBar.placeholder = NSLocalizedString("Search", comment: "")
searchController?.hidesNavigationBarDuringPresentation = false
self.navigationItem.titleView = self.searchController?.searchBar
searchController?.isActive = true
self.searchController?.becomeFirstResponder()
self.searchController?.searchBar.becomeFirstResponder()
这是委托方法:
extension SearchMembers : UISearchControllerDelegate {
func didPresentSearchController(searchController: UISearchController){
self.searchController?.searchBar.becomeFirstResponder()
}
}
在我的测试中,didPresentSearchController(searchController:) 从未被调用过。
我不知道为什么,但无论我做什么都是行不通的。
有什么想法吗?
编辑 唯一有效的解决方案
delay(0.6) {
self.searchController?.searchBar.becomeFirstResponder()
}
这会造成不必要的延迟
【问题讨论】:
-
@digitalHound 我尝试了此页面上的所有答案,但没有成功
-
使用文本字段代替搜索栏
-
“就是行不通。”不清楚这意味着什么。工作,做什么?你想做什么?
-
@matt 我在该页面上尝试了所有这些答案stackoverflow.com/questions/27951965/… 如果您知道更好,请告诉我
标签: ios swift uisearchcontroller