3

在我的应用程序中,我需要为我的ViewControllers.

  1. ViewController1必须只支持横向。
  2. ViewController2必须支持横向+纵向。

我在 Summury 项目中启用了所有这样的方向:

总结项目方向

所以,我将此代码插入ViewController1

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

我将此代码插入ViewController2

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

问题是它ViewController1也可以纵向旋转(它应该只支持横向)。

任何想法?

非常感谢大家!

4

2 回答 2

1

你的 viewController 是你的 rootViewController 吗?如果没有,那可能是你的问题。

如果您的 rootViewController 是 UINavigationController,您应该知道它不会将这些消息转发到它的 topViewController。因此,如果这是您的情况,我建议您使用 UINavigationController 的子类,在其中覆盖这些新方法以转发到 topViewController。

于 2012-10-06T14:25:34.587 回答
0

在 iOS 6 之前,这工作正常

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

else return NO; }

但在 iOS 6 中已弃用

现在您应该指定想要的方向并选择演示的方向

你应该写

- (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; }

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationLandscapeRight; }

希望能帮助到你

祝你好运

于 2012-10-06T16:46:24.977 回答