preferredInterfaceOrientationForPresentation 必须返回受支持的界面方向 (iOS 6)
Posted
技术标签:
【中文标题】preferredInterfaceOrientationForPresentation 必须返回受支持的界面方向 (iOS 6)【英文标题】:preferredInterfaceOrientationForPresentation must return a supported interface orientation (iOS 6) 【发布时间】:2012-12-03 18:32:58 【问题描述】:我的应用程序窗口的根视图控制器是一个子类 UINavigationController。我已将此代码添加到类中:
- (BOOL)shouldAutorotate
return [self.topViewController shouldAutorotate];
- (NSUInteger)supportedInterfaceOrientations
return [self.topViewController supportedInterfaceOrientations];
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
return [self.topViewController preferredInterfaceOrientationForPresentation];
在我的根 UIViewController 中,我添加了以下代码:
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
return UIInterfaceOrientationPortrait;
- (BOOL)shouldAutorotate
return NO;
- (NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationPortrait;
当设备在这个视图控制器上旋转到横向时,我会展示一个模态视图控制器。当设备旋转回纵向时,我应该关闭模式视图,但是当我这样做时,我收到以下错误:
'preferredInterfaceOrientationForPresentation must return a supported interface orientation!'
为什么会出现这个错误?
我尝试在根 UIViewController 中从 shouldAutorotate 返回 YES,现在我收到错误消息“支持的方向与应用程序没有共同方向,并且 shouldAutorotate 正在返回 YES”。这对我来说毫无意义,因为 UIInterfaceOrientationPortrait 是应用程序支持的方向之一。
【问题讨论】:
【参考方案1】:在-supportedInterfaceOrientations
中,您需要从UIInterfaceOrientationMask
返回值,而不是UIInterfaceOrientation
。特别是,看起来你想要UIInterfaceOrientationMaskPortrait
以下是 -supportedInterfaceOrientations 的文档中关于返回值的说明:
返回值
指定支持哪些方向的位掩码。有关有效的位掩码值,请参阅“UIInterfaceOrientationMask”。该方法返回的值不能为0。
【讨论】:
以上是关于preferredInterfaceOrientationForPresentation 必须返回受支持的界面方向 (iOS 6)的主要内容,如果未能解决你的问题,请参考以下文章