使用 UISearchController 推送的第二个视图控制器在 UINavigationBar 中未收到触摸
Posted
技术标签:
【中文标题】使用 UISearchController 推送的第二个视图控制器在 UINavigationBar 中未收到触摸【英文标题】:Second pushed View Controller with UISearchController doesn't receive touches in UINavigationBar 【发布时间】:2015-09-01 18:59:18 【问题描述】:我在 Apple 的 UICatalog 示例代码中修改了AAPLSearchBarEmbeddedInNavigationBarViewController
,以便在选择单元格时将AAPLSearchBarEmbeddedInNavigationBarViewController
的另一个实例推送到导航堆栈中。在第二个视图控制器中,UISearchBar 设置为 UINavigationBar 的标题视图(就像第一个一样)不可点击(与第一个不同)。这似乎是一个错误。我如何解决它?这是我修改后的 UICatalog 代码:
https://github.com/stevemoser/UICatalog
我还使用 Xcode 6 和 7 进行了测试。两者都坏了。
【问题讨论】:
尝试使用 3D 视图层次结构调试器工具来查看当您有第二个控制器时事物是如何绘制的。可能是一个红鲱鱼,但如果你注释掉 self.definesPresentationContext=YES 会发生什么。这对于模态表示并不重要,但以防万一它因某种原因影响事物。 @RoryMcKinnel 你让我走上了正轨。看我的回答。 我不喜欢这条线的外观。但是,就我的理解而言,它不应该影响推送的控制器。我假设它在那里,以防您以模态方式在单独的控制器中显示搜索结果,这将强制它位于搜索栏下方。无论如何,您的解决方案是有意义的:仅当您是***控制器时才提供上下文。 【参考方案1】:解决方案是在导航离开时设置第一个 VC self.definesPresentationContext = NO
,并确保在视图中确实出现了调用 self.definesPresentationContext=YES
,以便可见的 VC 允许定义表示上下文。
感谢 Rory McKinnel 让我走上正轨。
【讨论】:
以上是关于使用 UISearchController 推送的第二个视图控制器在 UINavigationBar 中未收到触摸的主要内容,如果未能解决你的问题,请参考以下文章
使用 UISearchController 推送的第二个视图控制器在 UINavigationBar 中未收到触摸
在 UINavigationBar 上呈现 UISearchController 时推送视图控制器