【发布时间】:2019-07-04 19:09:22
【问题描述】:
我有一个视图控制器,我在其中动态创建一个 UISearchController 并将其分配给self.navigationItem.searchController。
class MyViewController: UIViewController, UISearchBarDelegate {
let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.searchController = searchController
searchController.searchBar.delegate = self
// launch the app directly into this search text box
searchController.searchBar.becomeFirstResponder()
}
func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool {
// I tried this
searchBar.resignFirstResponder()
// and this
searchBar.endEditing(true)
// and finally this
return true
}
}
当用户触摸搜索栏外的任何位置并且屏幕恢复亮度时,键盘会隐藏起来。这是预期的行为。
但是,当用户点击屏幕键盘中的 [搜索] 按钮时,键盘会消失,但屏幕会保持暗淡。没有一个子视图可用,除非用户再次点击搜索栏,然后键盘又回来了。
简而言之,用户继续使用视图控制器的唯一方法是不要点击 [search] 按钮,这是违反直觉的。
我错过了什么吗?
【问题讨论】:
-
看看
searchController.obscuresBackgroundDuringPresentation = false是否有帮助。 -
@Don 做到了!谢谢。如果您将此作为答案发布,我将投票并接受
标签: ios swift uisearchbar uisearchbardelegate