无法在 iOS9 中强制应用仅纵向显示

cannot force app to portrait-only in iOS9

我需要我的应用程序只支持纵向。但是升级到iOS9之后,方向设置好像没有作用了。我已完成 this 个回答,这是我的应用程序设置:

但应用程序仍然进入横向。我做错了什么?

请检查 Info.plist "Supported interface orientations"。 它必须显示 Portrait 以满足您的要求。有时它不会更新为常规选项卡中的项目设置。如果您在此处发现横向方向,请将其删除。

<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
</array>

iOS9 中存在某种错误。它完全忽略了 plist 文件方向设置。所以我必须将这段代码添加到我的每个 UIViewControllers 以获得纵向。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    if (interfaceOrientation == UIInterfaceOrientationPortrait)
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
- (NSUInteger)supportedInterfaceOrientations
#else
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
#endif
{
    return UIInterfaceOrientationMaskPortrait;
}

看来我找到问题了。当我查看 info.plist 的 source 时,我发现了以下内容:

<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationPortraitUpsideDown</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
</array>

不知道 UISupportedInterfaceOrientations~ipad 密钥是如何产生的。当作为 属性 列表 查看时,它最初没有显示,但在作为源打开并保存后开始显示在 属性 列表中。

现在似乎也可以在 general 选项卡中进行设置。感谢 and 让我走上了正确的道路。

PS:我不确定这是一个错误还是预期的行为,所以我欢迎任何对此的见解。