UISearchController 以模态方式存在时的错误行为

Posted

技术标签:

【中文标题】UISearchController 以模态方式存在时的错误行为【英文标题】:UISearchController incorrect behavior when it is present modally 【发布时间】:2016-09-18 11:36:35 【问题描述】:

我展示了UIViewController 之类的模态样式。 UIViewControllerUITableView。我将UISearchController 添加到UITableViewUISearchController 在消失时有不正确的行为。我做了很多次UISearchControllers,但我没有面对这种行为。

我的代码

所以我显示UIViewController

 @objc fileprivate func selectInterlocutor(_ button: UIButton) 
        let selectInterlocutorTVC = SelectInterlocutorTableViewController()
        selectInterlocutorTVC.modalPresentationStyle = .overCurrentContext
        selectInterlocutorTVC.modalTransitionStyle = .coverVertical
        selectInterlocutorTVC.providesPresentationContextTransitionStyle = true
        present(selectInterlocutorTVC, animated: true) 

        
    

我将UISearchController 添加到tableView

  fileprivate func addSearchController() 
        searchController.searchBar.barStyle = .default
        searchController.delegate = self
        searchController.searchBar.delegate = self
        searchController.searchResultsUpdater = self
        searchController.searchBar.autocapitalizationType = .words
        searchController.dimsBackgroundDuringPresentation = false
        searchController.hidesNavigationBarDuringPresentation = false
        searchController.searchBar.sizeToFit()

        tableView.tableHeaderView = searchController.searchBar
    

请观看此视频,您可以看到此行为。 https://www.dropbox.com/s/l3m3q8wmqoy3qv2/SearchBarBug.mov?dl=0

我该如何解决?

【问题讨论】:

【参考方案1】:

我删除了UISearchController 并使用了UISearchBar,它对我有用。

 fileprivate func addSearchController() 
        searchBar.barStyle = .default
        searchBar.delegate = self
        searchBar.autocapitalizationType = .words
        searchBar.showsCancelButton = true
        searchBar.sizeToFit()

        tableView.tableHeaderView = searchBar
    

【讨论】:

以上是关于UISearchController 以模态方式存在时的错误行为的主要内容,如果未能解决你的问题,请参考以下文章

模态关闭时的 UISearchController 问题

iOS UISearchController 崩溃:应用程序试图在自身上呈现模态视图控制器

以编程方式显示导航栏的 UISearchController

以编程方式自动布局到 UISearchController 选择它时消失

以编程方式显示 UISearchController 的搜索栏

添加 UISearchController 并以编程方式使用约束对其进行定位