3

我有一个从 a中UIViewController推送的详细视图。在我添加了一些子视图(例如 a 、)。UITableViewUINavigationControllerUIViewControllerUITextViewUIImageView

如果iOS5我的图片视图被放大,我使用此代码停止自动旋转:

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

}

我正在尝试在iOS6using 下实现相同的目标:

- (BOOL)shouldAutorotate {
return FALSE;
}

但是,此方法永远不会被调用,并且应用程序会继续旋转。

任何人都可以帮忙吗?

4

1 回答 1

3

如果您有管理这些视图的导航控制器,则不会调用shouldAutorotate方法。您必须继承 UINavigationController并覆盖方法shouldAutorotatesupportedIntervalOrientations

从文档:

现在,iOS 容器(例如 UINavigationController)不会咨询它们的子容器来确定它们是否应该自动旋转

编辑 - - -

正如 Lomax 下面提到的,Apple 不鼓励子类化 UINavigationController。您应该尝试使用一个类别(这个 SO question 很好地解释了它):

@implementation UINavigationController 
-(BOOL)shouldAutorotate
{
    // your code
}

-(NSUInteger)supportedInterfaceOrientations
{
    (...)
}

@end
于 2012-11-27T16:50:01.607 回答