UISearchBar 结束编辑,隐藏键盘,但屏幕仍然变暗
UISearchBar ends editing, hides keyboard, but screen is still dimmed
我有一个视图控制器,我在其中动态创建了一个 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
}
}
当用户触摸搜索栏以外的任何地方并且屏幕恢复到原来的亮度时,键盘会隐藏起来。这是预期的行为。
但是,当用户点击屏幕键盘中的[搜索]按钮时,键盘消失,但屏幕保持暗淡。 None 的子视图可用,除非用户再次点击搜索栏,然后键盘返回。
简而言之,用户继续使用视图控制器的唯一方法就是不点击 [搜索] 按钮,这是违反直觉的。
我是不是漏掉了什么?
在 viewDidLoad() 中,添加以下行:
searchController.obscuresBackgroundDuringPresentation = false
来自文档:如果您使用相同的视图控制器来显示可搜索内容和搜索结果,建议您将此 属性 设置为 false。这个属性的默认值为真。
我有一个视图控制器,我在其中动态创建了一个 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
}
}
当用户触摸搜索栏以外的任何地方并且屏幕恢复到原来的亮度时,键盘会隐藏起来。这是预期的行为。
但是,当用户点击屏幕键盘中的[搜索]按钮时,键盘消失,但屏幕保持暗淡。 None 的子视图可用,除非用户再次点击搜索栏,然后键盘返回。
简而言之,用户继续使用视图控制器的唯一方法就是不点击 [搜索] 按钮,这是违反直觉的。
我是不是漏掉了什么?
在 viewDidLoad() 中,添加以下行:
searchController.obscuresBackgroundDuringPresentation = false
来自文档:如果您使用相同的视图控制器来显示可搜索内容和搜索结果,建议您将此 属性 设置为 false。这个属性的默认值为真。