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。这个属性的默认值为真。