我在ios11上与uisearchController搜索结果表view有问题,其中包含一些单元格。我向上滚动表格,然后完成滚动并从屏幕上摘下手指。之后,桌面必须向下滚动到边界以显示所有可用的单元格。但是,滚动冻结了0.5秒,然后tableview迅速跳动。看起来太糟糕了。
搜索栏位于导航栏上。当我滚动时,任何代码均未执行,因为所有单元格都保留在屏幕范围内。我在每个控制器功能上都放了断点,但它们不起作用。
我录制了一个有关此错误的视频。该视频可在以下网址获得:https://youtu.be/g3lqdpi4fea
我该如何修复?
我解决了问题。之所以存在错误,是因为TableView试图在搜索栏处于活动状态时试图滚动单元格(包括搜索栏),并将其保留在屏幕顶部。
解决方案是强制更改值navigationem.hidessearchbarwhenscrolling crolling toffals在搜索栏处于活动状态时,并在搜索栏关闭时将其返回。
func willPresentSearchController(_: UISearchController) {
if #available(iOS 11.0, *) {
navigationItem.hidesSearchBarWhenScrolling = false
}
}
func willDismissSearchController(_ searchController: UISearchController) {
if #available(iOS 11.0, *) {
navigationItem.hidesSearchBarWhenScrolling = true
}
}