当我将项目更新到iOS 13时,我遇到了异常问题。我有显示和处理某些UISearchController动作的逻辑(下面的代码),所有部分在iOS 11和12中均正常运行。
我的任务是在导航栏中添加搜索按钮,以UISearchController在按钮操作后显示。
但是在iOS 13中,我遇到了2个问题:
从按钮动作调用的代码
func showSearch() {
let searchResultsController = LUSearchResultsViewController()...
let searchController = UISearchController(searchResultsController: searchResultsController)
searchController.delegate = self
searchController.searchResultsUpdater = searchResultsController
navigationItem.searchController = searchController
definesPresentationContext = true
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
searchController.isActive = true
}
}
Run Code Online (Sandbox Code Playgroud)
只有一种解决方案可以帮助我显示搜索控制器,而与以前的iOS版本没有任何区别。
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
searchController.isActive = true
}
Run Code Online (Sandbox Code Playgroud)
在iOS 13,iOS 11和12上运行的代码无需asyncAfter
帮助我隐藏UISearchController和设置iOS 11和12(而非13)中的导航栏初始状态的代码。在SearchBar上点击“ 取消 ” 后,UISearchController开始调用委托方法。
//MARK: UISearchControllerDelegate
public func willDismissSearchController(_ searchController: UISearchController) {
self.navigationItem.searchController = …Run Code Online (Sandbox Code Playgroud)