1

我有一个要移植到 iOS 7 的现有 iOS 应用程序。iPad 版本UINavigationController使用UIPopoverController. 初始视图控制器的显示工作正常。当我pushViewController:animated使用动画=YES 推动另一个视图控制器时,新控制器会按预期从右侧动画化,然后它就像被弹起并弹回原位一样。同时,popover 控制器变得更大一些。

如果我关闭动画,我仍然可以调整大小但不会反弹。但是我也没有得到新视图控制器的演示动画。

在这一点上,我正在寻找线索。我会发布代码,但由于这一切都在 iPhone 和 iPad 上运行并自动检测视图控制器是否需要出现在新的导航控制器中,以及导航控制器是否需要出现在弹出框控制器中,这很复杂。我没有让它变得复杂,而是在寻找为什么会发生这种情况的想法,以便我可以追踪问题。

相同的代码在 iOS 5 和 6 中运行良好。

想知道是否有人在 iOS 7 中成功地做到了这一点会很有趣——只需在 aUINavigationController中呈现 aUIPopoverController并推送视图控制器而不会看到这种行为。

4

3 回答 3

3

问题原来是contentSizeForViewInPopover

我们的UINavigationController子类实现了这个方法来告诉容器UIPopoverController它应该有多大。在 7 之前的所有 iOS 版本中都记录了绝对工作。它不仅在 7 中被弃用,而且会导致上述问题。

解决方案是在 iOS 7 中返回popoverController.contentViewController.view.bounds.size并重新执行所有视图,以便它们适合弹出框,而不是调整弹出框的大小来处理您的视图。

另一种解决方案可能是摆脱导航控制器并简单地关闭弹出控制器并以新的大小重新显示一个新的控制器。

感谢您一起阅读。总有一天我会试着问一个有人可以回答的问题。

于 2013-09-27T21:27:58.783 回答
1

我遇到了完全相同的问题,然后我意识到问题出在键盘隐藏上,所以我在导航控制器推送下一个视图之前辞去了文本字段的第一响应者。

于 2014-02-05T14:14:03.883 回答
0

正如 Craig 所说,contentSizeForViewInPopover 在 iOS 7 中已被弃用。
  popoverContentSizeUIPopoverController 的属性。该属性表示由 UIPopoverController 的 contentViewController 属性中的视图控制器管理的内容视图的大小。 参考

于 2014-01-07T23:48:33.330 回答