iOS11错误 - 带有searchBar的TableView在向上滚动后跳回

时间:2017-09-23 23:24:46

标签: ios swift uitableview ios11 uisearchcontroller

iOS11与UISearchController搜索结果tableView存在问题,其中包含一些单元格。我向上滚动tableView,然后我完成滚动并从屏幕上移开我的手指。之后,tableView必须向下滚动到边框以显示所有可用单元格。但是滚动被冻结了0.5秒,然后tableView跳回非常强大而且很快。看起来太糟糕了。

搜索栏位于导航栏上。 滚动时,任何代码都不会执行,因为所有单元格都保留在屏幕范围内。我为每个控制器功能添加了断点,但它们不起作用。

我录制了一个关于此错误的视频。该视频位于:https://youtu.be/g3LqdpI4FeA

我该如何解决?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。该错误的存在是因为tableView在searchBar处于活动状态时尝试滚动包括searchBar在内的单元格并自行保存在屏幕顶部。

解决方法是在searchBar处于活动状态时强制更改值navigationItem.hidesSearchBarWhenScrolling为false,并在searchBar关闭时将其返回。

func willPresentSearchController(_: UISearchController) {
    if #available(iOS 11.0, *) {
        navigationItem.hidesSearchBarWhenScrolling = false
    }
}

func willDismissSearchController(_ searchController: UISearchController) {
    if #available(iOS 11.0, *) {
        navigationItem.hidesSearchBarWhenScrolling = true
    }
}