Ios 在UINavigationController中使用UISearchController和UIAbbarController时,搜索栏会被切断

Ios 在UINavigationController中使用UISearchController和UIAbbarController时,搜索栏会被切断,ios,uitabbarcontroller,uisearchcontroller,Ios,Uitabbarcontroller,Uisearchcontroller,我有一个应用程序在UINavigationController中有一个uitabarcontroller。(UITabBarController不是故事板的“初始视图控制器”。) 在最初的UIViewController中,我有一个UISearchController,它允许从远程源搜索内容 在我添加UITabBarController之前,这一切都很正常。现在,搜索栏在默认状态下显示良好,但一旦您开始在其中键入内容,它就会被推到视图的上边缘 我意识到这可能与自动调整滚动视图插图,扩展布局包括不

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

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

在我添加
UITabBarController
之前,这一切都很正常。现在,搜索栏在默认状态下显示良好,但一旦您开始在其中键入内容,它就会被推到视图的上边缘

我意识到这可能与
自动调整滚动视图插图
扩展布局包括不透明条
,和/或
边缘扩展布局
有很大关系,但在我所有的调整中,我一直找不到让
UISearchController
不超过视图顶部的神奇组合

有什么办法让它工作吗

请参见以下屏幕抓图:

初始视图:

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

键入单词并按enter键后:


我也遇到了这个问题,这里有一个解决方案:在
UITabBarController
上设置
definesPresentationContext=true
,而不是在table view控制器上设置


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

尽管以前定义表达上下文对我很有效,因为iOS 10在某个时候我不得不禁用搜索结果视图控制器上的调整滚动视图插入。更多关于我的答案,请访问

在iphone5S、ios8.0上完美运行的示例项目。没有搜索栏隐藏问题啊,那可能是一个bug。我在使用iPhone6 iOS8.3模拟器时看到了错误。我相信一定有办法解决这个问题,不过……iPhone4S(不是模拟器):我明白问题所在。我为这玩意儿发疯了你一路往上是什么意思?@malhal检查你的parentViewController,然后检查父母自己的parentViewController,等等-直到你找到导航控制器。检查什么?你的意思是在每个控制器中放置定义上下文是的,直到它修复它吗?顺便说一下,在我的例子中,我在选项卡控制器中有一个视图控制器,然后所有这些都在导航控制器中。它无法通过选项卡控制器。在这种情况下,解决方案是从正确的位置手动显示搜索。@malhal如果我没记错的话,所谓的解决方案是在导航控制器的直接子项上设置
definesPresentationContext=true
。例如,在问题的情况下,这将是选项卡栏控制器。