2

オリエンテーションをサポートしたくないビューがアプリにいくつかあります。didFinishLaunchingWithOptionsナビゲーションを追加します。

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

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

ViewController私が持っているそれぞれにUITabBar(これが重要かどうかはわかりません)。

最初のView Controllerに次を追加します:

-(BOOL)shouldAutorotate {
        return NO;
    }

    - (NSUInteger)supportedInterfaceOrientations {
        return UIInterfaceOrientationMaskPortrait;
    }

supportedInterfaceOrientationsビューの読み込み時に呼び出されますが、shouldAutorotateデバイスを回転させても呼び出されません。
ここで何が欠けていますか?

4

2 に答える 2

15

これは、可視のView ControllerにshouldAutorotateを渡していないためUITabBarcontrollerですUINavigationController。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;


}

あなたのViewControllerで:

- (BOOL)shouldAutorotate {
return YES;
}

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