在UINavigationController中使用带有UITabBarController的UISearchController时,搜索栏会被切断

我有一个在UINavigationController中有一个UITabBarController的应用程序。 ( UITabBarController不是故事板的“初始视图控制器”。)

在最初的UIViewController ,我有一个UISearchController ,它允许从远程源搜索内容。

这个工作正常,直到我添加了UITabBarController 。 现在,搜索栏在默认状态下显示正常,但是一旦您开始在其中键入内容,它就会向上推过视图的上边缘。

我意识到这可能与automaticallyAdjustsScrollViewInsetsextendedLayoutIncludesOpaqueBars和/或edgesForExtendedLayout ,但是在我所有的调整中,我一直无法找到魔法组合来让UISearchController不会超越视图的顶部。

有关如何使其工作的任何想法?

请参阅此示例项目中的以下screengrab:

初步观点:

初步看法

搜索文本框成为第一响应者:

搜索文本框成为第一响应者

输入一个单词并点击后输入:

在此处输入图像描述

我也碰到了这个问题,这里有一个解决方案:在UITabBarController上设置definesPresentationContext = true而不是表视图控制器似乎解决了它。

显然,您必须一直向上,直到容器层次结构中的导航控制器。 如果你问我,这不是世界上最明显的事情。

尽管definesPresentationContext以前对我definesPresentationContext ,但是因为iOS 10在某些时候我不得不在我的搜索结果视图控制器上禁用Adjust Scroll View Insets。 当我在UITabBarController中使用UINavigationController时,更多关于我在UISearchBar的回答会被切断