iOS:通用应用程序不会旋转,从不调用 willRotateToInterfaceOrientation
Posted
技术标签:
【中文标题】iOS:通用应用程序不会旋转,从不调用 willRotateToInterfaceOrientation【英文标题】:iOS: Universal app won't rotate, never calls willRotateToInterfaceOrientation 【发布时间】:2011-02-06 20:40:45 【问题描述】:我的(通用 iPhone/iPad)应用程序不会旋转。在我所有的视图控制器中,我向方法 shouldRotate 返回“YES”,但我的视图控制器的 willRotateToInterfaceOrientation 方法永远不会被调用。
这是一个常见问题吗?
【问题讨论】:
您可能应该仔细检查一下您没有打开方向锁定。你知道,在我们都疯狂尝试测试之前:P 它在 iPad 模拟器和实际 iPad 上的行为是这样的。 Aurum:在偶然发现您的评论之前,我已经浪费了 10 分钟试图弄清楚到底发生了什么!啊!! 【参考方案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,但在我添加拆分视图控制器子类之前它还是不起作用。
【讨论】:
以上是关于iOS:通用应用程序不会旋转,从不调用 willRotateToInterfaceOrientation的主要内容,如果未能解决你的问题,请参考以下文章
为啥 logoutController 从不调用? [复制]
在 iOS 11 中,UIViewController 的 transitionFromViewController 从不调用它的完成块