如果UIPageViewController的当前可见页面不支持当前方向,则更改旋转

时间:2011-12-21 13:26:11

标签: ios orientation uipageviewcontroller

如果用户在UIPageViewController上浏览到不支持当前界面方向的新视图控制器,我正试图让设备旋转。我希望获得或多或少相同的行为,就好像模拟推送VC一样。

示例:UIPageViewController的当前VC支持所有接口方向,用户可以浏览下一个VC,该VC只应以横向显示。

我使用默认的Page-Base-Application-Template进行测试,并实现了DataViewController的shouldAutorotateToInterfaceOrientation方法,如下所示:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) {
        return YES;
    }

    if ([self.dataObject isEqualToString:@"February"]) {
        return NO;
    }

    return YES;
}

我的期望是,如果我在2月份浏览到视图控制器,屏幕将旋转到横向,但它保持纵向。有趣的是,shouldAutorotateToInterfaceOrientation被调用,如果我浏览到二月-VC,则返回NO。

我还在RootViewController检查方向,但没有运气。

我现在没有任何想法。 任何建议都将非常感谢,谢谢!

1 个答案:

答案 0 :(得分:0)

  

有趣的部分是   如果调用了shouldAutorotateToInterfaceOrientation,则返回NO   我浏览了二月-VC

在这种情况下,我建议您唯一的方法是继承UIPageViewController。显然,它知道它对shouldAutorotate的回复应该是什么,并且你不同意该回复,所以你需要提供不同的回复。

听到UIPageViewController的行为与此类似,我并不感到惊讶 - 毕竟,UINavigationController的工作方式相同:如果将视图控制器推到导航控制器的堆栈上,并且该视图控制器不允许设备的当前方向,界面旋转到视图控制器允许的方向。我通过展示一个视图(曾经被称为模态视图)来解决这个问题,它强制设备旋转。