2011-03-14 12 views
0

私はUITabBarControllerを持つアプリケーションを持っていますが、各タブにはUINavigationControllerが添付されています。ここでは、タブ1,2および4のnavigationControllersのrootViewControllersがポートレートの向きのみをサポートし、ポートレートに回転するように要求されたときにのみYESを返すような "shouldAutorotateToInterfaceOrientation"実装を持つと仮定します。しかし、タブ3には、ナビゲーションコントローラに、横向きの向きをサポートするいくつかのviewControllerがあります。タブの変更時に自動回転が無視される

私は現在タブ3にいて、ランドスケープをサポートするviewControllerの1つに移動すると、デバイスを回すことができ、インターフェイスがランドスケープに変わります。しかし、風景モードのインターフェースでタブ1,2,4を押した場合、表示されたviewControllerが明示的にポートレートのみをサポートしているにもかかわらず、インターフェースはポートレートに戻っていませんが、ランドスケープにとどまります。

私が紛失しているかどうか、またはこれが意図された動作であるかどうかは不明ですが、tabBarController経由でポートレートのみのviewControllerに切り替えると、インターフェイスの向きをポートレートに戻したいと思います。階層全体がプログラムによって構築されます。

ありがとうございます!

答えて

1

あなたのアプリの1つで同じ問題が発生していましたが、タブ項目でナビゲーションコントローラを使用していないという違いがありました。

私は、メソッドshouldAutorotateのために(サブクラス化されることを意図していないので)UITabBarControllerのカテゴリを作成することになった...

@implementation UITabBarController (orientation) 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
#if DEBUG 
    NSLog(@"UITabBarController (orientation) -> shouldAutorotateToInterfaceOrientation: [%d]",toInterfaceOrientation); 
#endif 
    //if(toInterfaceOrientation == UIInterfaceOrientationPortrait) return YES; 
// else return [self.selectedViewController shouldAutorotateToInterfaceOrientation:toInterfaceOrientation]; 
    if (self.selectedViewController == [self.viewControllers objectAtIndex:kLibraryStoreTabIndex]) 
     return NO; 


    if(self.selectedViewController == [self.viewControllers objectAtIndex:kContactTabIndex]){ 

     return YES; 
    } 
// rest of the conditions depending of the tab 

return NO; //last option 
} 
+0

うーん私はいくつかのテストを行なったし、カテゴリ内の私のshouldAutorotateToInterfaceOrientationメソッドがありませんでしたデバイスを回転させずにタブを切り替えるときに呼び出されます(意味があります)。手でそれを呼びますか? – Robin

+0

いいえ、私はそれを私自身と呼んでいませんでした。 – Pacu

関連する問題