即使我阻止横向旋转,屏幕也会旋转

时间:2014-12-04 10:03:47

标签: ios ios7 ios8 uiinterfaceorientation

我想屏蔽某些UIViewController的横向方向。我阅读了很多不同的东西来管理它,但我没有找到一个运行良好的解决方案。每次,方向都不会被阻挡,即使它应该是。

我有以下代码来阻止UIViewController中没有横向旋转的横向:

- (BOOL)shouldAutorotate {
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

即使这样,视图也在横向旋转。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

UIViewController内有UINavigationController吗?还是TabBarController?在这种情况下,UIViewController只是将该调用传递给UINavigationController,您必须继承UINavigationController并在那里实现这些方法,并检查导航控制器堆栈中的哪个视图控制器是想要旋转的那个,只允许旋转你想要的那个。

这就是我在项目中的表现:

- (NSUInteger)supportedInterfaceOrientations
{
    if ([self.visibleViewController class] == [MyViewController class]) {
        return UIInterfaceOrientationMaskAllButUpsideDown;
    } else {
        return UIInterfaceOrientationMaskPortrait;
    }
}

您也可以尝试从导航控制器中询问有问题的UIViewController,但由于某些原因,这对我不起作用。

- (NSUInteger)supportedInterfaceOrientations
{
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

您也可以对其余方法使用相同的方法。