我有一个现有的iOS应用程序,我正在移植到iOS 7.iPad版本在UINavigationController
中使用UIPopoverController
。初始视图控制器的显示工作正常。当我使用动画= YES的pushViewController:animated
推动另一个视图控制器时,新控制器将按照预期从右侧动画显示,然后它就好像它已被弹起并弹回到位。与此同时,弹出控制器变得更大。
如果我关闭动画,我仍然会调整大小但不会反弹。但是我也没有得到新视图控制器的演示动画。
此时我正在寻找线索。我发布了代码,但这很复杂,因为这一切都在iPhone和iPad上运行,并自动检测是否需要在新的导航控制器中显示视图控制器,以及该导航控制器是否需要出现在弹出控制器中。而不是让它变得复杂,我正在寻找可能发生这种情况的想法,以便我可以追踪问题。
相同的代码在iOS 5和6中完美运行。
知道是否有人在iOS 7中成功执行此操作会很有趣 - 只需在UINavigationController
中显示UIPopoverController
并推送视图控制器而不会看到此行为。
答案 0 :(得分:3)
问题原来是contentSizeForViewInPopover
。
我们的UINavigationController
子类实现了这个方法来告诉包含UIPopoverController
它应该有多大。在7之前的所有iOS版本中都记录了绝对的工作原理。它不仅在7中被弃用,它还会导致上述问题。
解决方案是在iOS 7中返回popoverController.contentViewController.view.bounds.size
并重新执行所有视图,使其适合弹出框,而不是调整窗口大小以处理视图。
另一个解决方案可能是摆脱导航控制器,只需关闭弹出控制器并以新的尺寸重新显示一个新的控制器。
感谢您一起阅读。总有一天我会试着问一个人可以回答的问题。
答案 1 :(得分:1)
我有完全相同的问题,然后我意识到问题是来自键盘隐藏,所以我在导航控制器推动下一个视图之前辞去文本字段第一响应者。
答案 2 :(得分:0)
如Craig所述,iOS 7中不推荐使用contentSizeForViewInPopover。
popoverContentSize
UIPopoverController的属性。此属性表示由UIPopoverController的contentViewController属性中的视图控制器管理的内容视图的大小。
Reference