UISearchController的UISearchBar在UITableView滚动时不正确地移动并跳转



在视频中,很难看到发生了什么,所以我会尝试解释一下。https://youtu.be/yOrCJB9yZlg

我在其根视图中有UIViewControllerUITableView。通过Autolayout绑定(绑定方式没有区别:绑定到SuperView或绑定到SafeArea(。

SearchBar添加如下: let search = UISearchController(searchResultsController: nil) self.navigationItem.searchController = search

当我慢慢滚动表格时,大导航栏和紧凑导航栏之间的转换,以及在searchBar中显示和显示的动画太快了。搜索栏跳出导航栏而不是顺利打开/关闭;导航条的转换是在两种状态之间跳跃,大的和紧凑的,当你在屏幕上慢慢移动手指时,没有平稳地通过中间的半打开状态,就像在系统应用程序(邮件、电话、消息、联系人等(中一样。

我举了一个空项目的例子来说明这个问题;导航栏逻辑或任何逻辑都没有任何更改。只有两个新的VC和这种奇怪的行为。

如果我创建xCode的"MasterDetails"项目示例并将UISearchController添加到其中,它将正常工作。我认为这是因为他们在里面使用了UITableViewController而不是UIViewController+UITableView

这种行为的原因是什么?如何解决?

我在搜索控制器转换和表视图方面也遇到了同样的问题。就像这样,它的闪烁或画面在跳跃。搜索控制器位于导航项上。

关键的解决方案是从视图控制器中删除安全区域指南,并为表视图指定上下左右约束。它会像这个一样平滑

您所做的是正确的。您是否尝试在设备中运行代码?感觉更像是模拟器中的故障。我试过你试过的,它在设备上对我来说很好。而故障发生在模拟器中。

请参阅本文。他们已经逐步解释了这个过程。

这是一个已知的问题,您的代码看起来很好。这个问题已经在这里讨论过了

当您使用具有大型导航标题的UIScrollView或其子类时,会出现问题。它不起作用。当您改用UICollectionViewControllerUITableViewController时,问题就会消失。

最新更新