iOS 11 bug - 带有搜索栏的 TableView 向上滚动后跳回

标签 ios swift uitableview ios11 uisearchcontroller

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

搜索栏位于导航栏上。 当我滚动时,不会执行任何代码,因为所有单元格都保留在屏幕范围内。我给每个 Controller 函数都设置了断点,但它们不起作用。

我录制了有关此错误的视频。该视频可在以下位置观看:https://youtu.be/g3LqdpI4FeA

如何修复它?

最佳答案

我解决了这个问题。该错误的存在是因为当 searchBar 处于事件状态并单独保持在屏幕顶部时,tableView 尝试滚动包括 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
    }
}

关于iOS 11 bug - 带有搜索栏的 TableView 向上滚动后跳回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46385169/

相关文章:

ios - 在 View Controller 之间移动时保存文本字段中的内容

ios - 扫描二维码并打开 URL – Swift AVFoundation 库

swift - 无法将 Collection View 连接到 View Controller 代码。 'Error unrecognized selector sent to instance'

ios - Grouped Table View 发送 nil 但 Plain 完美运行

ios - 如何保存从 Assets Xcode swift 中选择的图像

ios - 如何让我的 bundle 显示名称在“设置”中和我的图标下显示不同? (X代码)

ios - TableView不显示数据

ios - 在某些情况下禁用重用单元格

ios - UIProgressView 在设备旋转时消失或不缩放

function - 快速从一个函数返回多个值