我有一个视图控制器,其中动态创建了一个UISearchController并将其分配给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
}
}
。
{{1}}
当用户触摸搜索栏之外的任何地方时,键盘都会隐藏起来,并且屏幕会恢复到其亮度。那是预期的行为。
但是,当用户点击屏幕键盘上的[Search]按钮时,键盘消失了,但屏幕保持暗淡。子视图均不可用,除非用户再次点击搜索栏,然后键盘又回来了。
因此,简而言之,用户继续使用视图控制器的唯一方法是不要点击[search]按钮,这是违反直觉的。
我想念东西吗?
答案 0 :(得分:1)
在viewDidLoad()中,添加以下行:
searchController.obscuresBackgroundDuringPresentation = false
从文档中:如果您使用相同的视图控制器来显示可搜索的内容和搜索结果,则建议将此属性设置为false。此属性的默认值为true。