【问题标题】:iOS: Universal app won't rotate, never calls willRotateToInterfaceOrientationiOS:通用应用程序不会旋转,从不调用 willRotateToInterfaceOrientation
【发布时间】:2011-02-06 20:40:45
【问题描述】:

我的(通用 iPhone/iPad)应用程序不会旋转。在我所有的视图控制器中,我向方法 shouldRotate 返回“YES”,但我的视图控制器的 willRotateToInterfaceOrientation 方法永远不会被调用。

这是一个常见问题吗?

【问题讨论】:

  • 您可能应该仔细检查一下您没有打开方向锁定。你知道,在我们都疯狂尝试测试之前:P
  • 它在 iPad 模拟器和实际 iPad 上的行为是这样的。
  • Aurum:在偶然发现您的评论之前,我已经浪费了 10 分钟试图弄清楚到底发生了什么!啊!!

标签: iphone ipad ios uiviewcontroller rotation


【解决方案1】:

在那个通用应用程序中,您使用的是 splitViewController 吗?如果是这样,请确保您的所有 viewControllers 都返回 Yes 以进行 autoRotate。

我将一组 viewControllers(实际上是 NavigationViewControllers)传递给 splitViewController,但我的视图没有旋转。这是因为我的左手 viewController 没有实现 shouldAutorotate。我认为这是因为当您使用 splitViewController 时 iPad 上的旋转与 iPhone 上的旋转不同。旋转时显示两个视图控制器。我猜两者都必须支持横向模式?

如果您不希望一个 viewController 旋转,请在 shouldAutoRotate 方法中进行条件检查以查看您是否在 iPad 上。

【讨论】:

    【解决方案2】:

    您使用的是标签栏吗?您将需要对您的标签栏控制器进行子类化并返回 yes 以表示应该旋转。

    【讨论】:

    • 你确定吗?我从来不需要那样做。我只是在所有标签栏的视图控制器中为 shouldRotate 返回 YES,而不是为标签栏本身返回 YES。
    • 我正在使用基于 [link]pushplay.net/2009/05/… 的自定义视图控制器,但适用于 NIB 和通用应用程序。
    • 我会为这个投一票;它对我有用。我不想在我的 iPhone 上旋转标签栏,但在 iPad 上,我愿意——而且我必须继承 UITabBarController 的子类以获得自动旋转支持。我是否对UISplitViewController 进行了子类化并不重要(我尝试了有无)。
    【解决方案3】:

    我刚碰到这个。解决方案是继承 UISplitViewController 并添加

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

    即使各个视图控制器已经返回 YES,但在我添加拆分视图控制器子类之前它还是不起作用。

    【讨论】:

      猜你喜欢
      • 2010-12-07
      • 1970-01-01
      • 2011-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 2012-03-25
      相关资源
      最近更新 更多