2

我的应用中有一些我不想支持方向的视图。在didFinishLaunchingWithOptions我添加导航:

...
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:self.viewController];

    self.window.rootViewController = nav;
    [self.window makeKeyAndVisible];
...

在每个ViewController我都有UITabBar(我不知道这是否重要)。

在第一个视图控制器中,我添加:

-(BOOL)shouldAutorotate {
        return NO;
    }

    - (NSUInteger)supportedInterfaceOrientations {
        return UIInterfaceOrientationMaskPortrait;
    }

supportedInterfaceOrientations在视图加载时调用,但shouldAutorotate在旋转设备时不调用。
我在这里想念什么?

4

2 回答 2

15

这是因为既没有UITabBarcontroller也没有UINavigationController将 shouldAutorotate 传递给它的可见视图控制器。要解决这个问题,您可以继承 UITabBarController 或 UINavigationController 并从那里转发 shouldAutorotate:

在您的子类 UITabBarController 添加:

- (BOOL)shouldAutorotate
{
    return [self.selectedViewController shouldAutorotate];
}

在您的子类 UINavigationController 添加:

- (BOOL)shouldAutorotate
{
    return [self.visibleViewController shouldAutorotate];
}
于 2012-10-21T10:13:45.380 回答
0

AppDelegate

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window  // iOS 6
{

return UIInterfaceOrientationMaskAll;


}

在您的视图控制器中:

- (BOOL)shouldAutorotate {
return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
于 2012-10-21T08:49:42.383 回答