当弹出窗口时,UISplitViewController在iOS 8中禁用横向旋转的肖像

时间:2015-02-13 18:43:36

标签: ios objective-c ios8 rotation uisplitviewcontroller

好的,这很奇怪。

在iOS 8中,如果在纵向中从UISplitViewController中的主面板呈现弹出窗口,则禁用旋转。我经历了一系列的测试并证实了这种情况。

在UISplitViewController上有一个私有方法,_shouldPreventAutorotation,在旋转时调用并检查popover内容控制器上的presentationController属性。如果返回非零值,则禁用旋转。如果覆盖该属性并返回nil,则再次启用旋转。

有没有人知道为什么在iOS 8中添加了这种行为?

我上传了演示此行为的测试项目here

1 个答案:

答案 0 :(得分:7)

因此,在Hopper中进行了一些调查和反编译之后,在UISplitViewController上有一个私有方法,当旋转设备时会调用该方法来确定是否应该禁用旋转。

如果主面板可见,主面板有一个子模态视图控制器(在这种情况下是弹出窗口),并且呈现的popover的presentationController属性返回一个非零值,然后禁用旋转。

我可以通过覆盖popover控制器上的-presentationController来覆盖此行为,并返回nil。不确定是否有任何副作用,但它确实有效。

- (UIPresentationController *)presentationController {
    return nil;
}