gpt4 book ai didi

ios - Swift 5 和 iOS 13 UISearchController 错误的呈现和关闭行为

转载 作者:行者123 更新时间:2023-12-04 16:03:37 24 4
gpt4 key购买 nike

当我将我的项目更新到 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
}
}

只有一种解决方案可以帮助我显示搜索 Controller ,而与以前的 iOS 版本没有任何差异。
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
searchController.isActive = true
}

适用于 iOS 13、iOS 11 和 12 的代码无需 即可运行异步后

帮助我隐藏的代码 UISearchController并设置导航栏初始状态 在 iOS 11 和 12 中,而不是在 13 中 .点击后 取消在搜索栏上, UISearchController开始调用委托(delegate)方法。
  //MARK: UISearchControllerDelegate


public func willDismissSearchController(_ searchController: UISearchController) {
self.navigationItem.searchController = nil
}

但是

设置后 navigationItem.searchController = nil didPresentSearchController调用两次,不仅 UISearchController被解雇,但整个 UIViewController UIWindow 的等级权限.或者如果我添加 asyncAfter在这里,我不需要使用扩展的导航栏高度来正常解雇。

所以
  • 我认为 asyncAfter 在狗钉中,你将如何解决这个问题?
  • 如何正确关闭 UISearchController?
  • 最佳答案

    此问题发生在 iOS 13

    添加 searchController.extendedLayoutIncludesOpaqueBars = true

    `
    extension SearchViewController:UISearchControllerDelegate{
    func willPresentSearchController(_ searchController: UISearchController) {
    if #available(iOS 13, *){
    self.navigationController?.navigationBar.isTranslucent = true
    }
    }
    func willDismissSearchController(_ searchController: UISearchController) {
    if #available(iOS 13, *){
    self.navigationController?.navigationBar.isTranslucent = false
    }
    }
    }
    `

    关于ios - Swift 5 和 iOS 13 UISearchController 错误的呈现和关闭行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58080805/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com