IO6不叫 - (BOOL)shouldAutorotate(IO6 doesn't cal

2019-07-01 13:21发布

我在我的应用程序的一些看法,我不想询问服务方向。 在didFinishLaunchingWithOptions我添加导航:

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

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

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

在第一视图控制器I添加:

-(BOOL)shouldAutorotate {
        return NO;
    }

    - (NSUInteger)supportedInterfaceOrientations {
        return UIInterfaceOrientationMaskPortrait;
    }

supportedInterfaceOrientations被称为在视图装载但shouldAutorotate不叫我旋转设备。
我缺少的是在这里吗?

Answer 1:

这是因为既不UITabBarcontroller也不UINavigationController是通过shouldAutorotate其可见视图控制器。 为了解决这个问题,你可以从那里继承任何的UITabBarController UINavigationController的还是和前shouldAutorotate:

在你的子类的UITabBarController地址:

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

在你的子类的UINavigationController地址:

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


Answer 2:

AppDelegate

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

return UIInterfaceOrientationMaskAll;


}

在您的视图控制器:

- (BOOL)shouldAutorotate {
return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}


文章来源: IO6 doesn't call -(BOOL)shouldAutorotate