【问题标题】:iPad modal view controller rotates interface on dismissiPad模式视图控制器在关闭时旋转界面
【发布时间】:2014-04-17 14:09:06
【问题描述】:

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

应用程序的窗口有一个rootViewController,它设置为UIViewController 的自定义类(MenuViewController)。这个视图控制器有一个自己的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 上。

【问题讨论】:

    标签: ios objective-c ipad modalviewcontroller interface-orientation


    【解决方案1】:

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

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

    【讨论】:

    • 我实际上已经通过实现preferredInterfaceOrientationForPresentation 并返回self.interfaceOrientation 来修复它。如果你问我很奇怪,但它确实完成了工作! :)
    猜你喜欢
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多