2

簡単な問題:

私は2つのナビゲーションコントローラーを備えたUITabBarControllerを持っています[それらをLeftとRightControllerと呼びましょう]

デフォルトで選択されているLeftControllerで、インターフェイスの向きを検出する新しいViewControllerをプッシュできます。

右側のコントローラーでは、同じView Controllerをプッシュできますが、インターフェイスの向きが検出されません。さらに言えば、shouldAutoRotateInterfaceメソッドにもまったく入りません。T___T

はぁぁぁぁぁぁ!

関連性がある場合は、プッシュしているViewContollerはhidesBottomBarWhenPushedプロパティを使用します。

4

3 に答える 3

13

おそらくこれはあなたの問題です:

タブバーコントローラーはデフォルトで縦向きをサポートしており、 すべてのルートビューコントローラーがそのような向きをサポートしていない限り、横向きに回転しません。デバイスの向きが変更されると、タブバーコントローラーはビューコントローラーの配列を照会します。それらのいずれかが方向をサポートしていない場合、タブバーコントローラーはその方向を変更しません。

解決策は、ビューにつながるすべてのViewControllerで次のメソッドをオーバーライドすることです。

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
    return YES;
}

たとえばUITabBarController、IBのデフォルトを使用する代わりに、上記のメソッドのみを含む独自のサブクラスに置き換えます。

于 2010-09-29T04:56:07.343 に答える
8

これについては少し遅れていますが、常に縦向きで実行したいタブバーアプリの起動時に自動回転の問題に遭遇しました。

アプリの plist には、ポートレート モードで起動してポートレート モードのみを許可するために必要な設定があり、すべてのビュー コントローラーはポートレート モードのみを許可します。それでも、iPhone を横向きにしてアプリを起動すると、アプリは縦向きで起動し、その後横向きに回転しました!

サブクラス化するのではなく、クラスのカテゴリを使用してメソッドをUITabBarControllerオーバーライドしただけです。アプリのデリゲートに次のコードを含めました。UITabBarControllershouldAutorotateToInterfaceOrientation:UITabBarController

@implementation UITabBarController(UITabBarControllerCategory)

-(BOOL)shouldAutorotateToInterfaceOrientation:
                 (UIInterfaceOrientation)toInterfaceOrientation
{
    return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

美しく機能し、非常に軽量です。

于 2011-02-25T20:54:52.000 に答える
0

あなたの uitabbarcontroller は自動回転を実装していますか? 自動回転を実装したい子ビューコントローラーは、その親に自動回転を実装させる必要があります。

于 2010-08-06T16:25:16.873 に答える