0

我正在开发的应用程序有问题,如下所示:

应用程序的窗口有一个rootViewController设置为自定义类 ( MenuViewController) 的UIViewController。这个视图控制器有rootViewController它自己的属性。无论何时设置都会发生这种情况(代码的真正简短版本):

- (void)setRootViewController:(UIViewControlelr *)rootViewController
{
    ...
    _rootViewController = rootViewController;
    if (self.rootViewController) {
        [self addChildViewController:rootViewController];
        [self.view addSubview:rootViewController.view];
    }
    ...
}

现在这MenuViewController可以在它的 rootViewController 之上显示一个模态视图控制器。

我这样做:

[self.rootViewController presentModalViewController:viewController animated:YES completition:nil];

直到这里,一切看起来都很好。现在在 iPad 上,每当我[self.presentingViewController dismissViewControllerAnimated:YES completion:nil]从模态视图控制器调用时,它下方的界面都会旋转到相同的方向(即UIInterfaceOrientationLandscapeLeft),而不管视图控制器呈现时的初始方向是什么。

总而言之,我的观点的层次结构是这样的:

Window
   |
   - Menu View Controller
      |
      - Root View Controller
          |
          - Modal view controller

有谁知道我该如何解决这个问题?它不会发生在 iPhone 上。

4

1 回答 1

1

在我看来,在 iPad 上 yourMenuViewController支持rootViewController多种界面方向,而在 iPhone 上则不支持。这是猜测,因为您对此没有说任何话。

如果是这种情况,并且 rootViewController 确实支持多个界面方向,则修复方法是覆盖- supportedInterfaceOrientations并返回纵向,这似乎是您所建议的。

于 2014-04-17T16:19:48.943 回答