如何解决点击搜索栏时的跳跃问题?

Posted

技术标签:

【中文标题】如何解决点击搜索栏时的跳跃问题?【英文标题】:How to fix jumping upon clicking search bar? 【发布时间】:2019-06-11 09:56:57 【问题描述】:

我尝试添加一个简单的搜索控制器,但每当我单击它以使其变为活动状态时,它就会跳出屏幕。为什么会发生这种情况?我检查了所有代码,我没有使用约束或任何东西进行操作。

我通过以下函数初始化我的搜索控制器(并在 ViewDidLoad 中调用它):

private func initSearchController() 
    self.searchController = (
        let controller =     UISearchController(searchResultsController: nil)
        controller.searchResultsUpdater = self
        controller.searchBar.delegate = self
        controller.dimsBackgroundDuringPresentation = false
        controller.searchBar.sizeToFit()
        controller.searchBar.barStyle = UIBarStyle.black
        controller.searchBar.barTintColor = UIColor.white
        controller.searchBar.backgroundColor = UIColor.clear
        self.tableView.tableHeaderView = controller.searchBar
        return controller
    )()
    self.tableView.reloadData()

【问题讨论】:

你试过self.searchController.hidesNavigationBarDuringPresentation = false 实际上,我最终做到了。尽管如此,假设它并不令人满意,因为最初,我希望我的导航栏被搜索栏胜过。基本上是这样的:1)搜索栏变为活动状态2)导航栏隐藏自身3)搜索栏代替导航栏4)取消时一切都回到原位至少,我在大多数解决方案中都看到了这个动画,对我来说它是最好的 如果您觉得我的回答有用,请检查一下它是不是真的答案? @matt 不,搜索控制器不应该突然消失 【参考方案1】:
self.searchController.hidesNavigationBarDuringPresentation = false

【讨论】:

以上是关于如何解决点击搜索栏时的跳跃问题?的主要内容,如果未能解决你的问题,请参考以下文章

再次点击当前标签栏时如何在 UITableView 中滚动到顶部?

单击搜索栏时如何显示单独的视图? [SwiftUI] [关闭]

使用ios 8 UISearchController单击搜索栏时如何隐藏部分标题?

单击搜索栏时如何导航到另一个视图控制器

从 UISearchController 搜索栏快速删除黑色边框

iOS:在导航栏中显示搜索栏时隐藏范围栏