0

我正在尝试实现自动旋转,但我的应用不听我的!

该应用程序有一个标签栏控制器,它监督 3 个视图控制器。标签栏是在应用程序委托中以编程方式创建的。 每个视图控制器都有这个标准的简单方法:

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

应用程序委托如下所示:

self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:gameVC, settingsVC, helpVC, nil];
self.window.rootViewController = self.tabBarController;

此外,在目标摘要区域中,我激活了 iPad 和 iPhone 的所有 4 个方向。

在模拟器中,任何一个设备都不会发生旋转。我似乎错过了什么。也许还需要一个设置?有什么不正常的吗?项目中没有其他与旋转视图相关的内容。

4

4 回答 4

1

您在回复中似乎没有说的唯一我能想到的就是更改 info.plist 下的设备方向。我从个人经验中知道,如果您单击目标摘要区域中支持的设备方向,它实际上可能不会在 Info 属性列表中更改它。通过执行以下操作,检查并确保在属性列表中选择了所有四个:

  • 转到您的 Info.plist
  • 查看支持的界面方向和支持的界面方向 (iPad)
  • 确保它在两个下都有 4 个字符串:Portrait(底部主页按钮),Portrait(顶部主页按钮),Landscape(左主页按钮),Landscape(右主页按钮)
于 2012-08-15T01:20:10.503 回答
1

为超级目的使用一个 ViewController,然后在每个视图控制器中继承它。在超级视图控制器中添加这个

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

所以,你只需要做一次就可以让它们自动旋转

于 2012-11-26T06:02:09.507 回答
0

来自 http://developer.apple.com/library/ios/#DOCUMENTATION/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/TabBarControllers.html#//apple_ref/doc/uid/TP40011313-CH3-SW26

标签栏控制器默认支持纵向,除非所有包含的视图控制器都支持这样的方向,否则不会旋转到横向。当设备方向发生变化时,标签栏控制器会查询其视图控制器数组。如果其中任何一个不支持方向,则标签栏控制器不会更改其方向。

于 2012-08-15T07:37:28.267 回答
0

@Zack @AlexanderZats 这很微妙。我正在阅读这个 SO答案,它把我带到了这里 。第二个链接很好地讨论了应用程序可能无法旋转的不同可能原因。最后一点引起了我的注意。果然,我压倒一切initWithNibName,没有调用super它。我认为这最终意味着 VC 不在响应者链中。非常感谢所有给我想法和建议的人!

于 2012-08-16T20:45:53.253 回答