3

4つのタブを管理するタブバーコントローラーがあります。shouldAutorotateToInterfaceOrientation:メソッドでタブの1つにある特定のView Controllerのみが回転できるように、タブバーコントローラーをサブクラス化しました。すべてがほぼ正常に機能します。残りのタブのコントローラーは回転しません。ただし、回転が許可されているView Controllerが実際に回転する場合、ユーザーが残りのタブの1つをタップすると、対応するView Controllerも回転しているように見えます(shouldAutorotateToInterfaceOrientation:メソッドは明示的にNOを返します)。

これを防ぐにはどうすればよいですか?

明確にするために、ここに例があります。タブ0、1、または2をタップしてデバイスを回転させようとしても、何も起こりません(正しく)。タブ4をタップしてデバイスを回転させると、タブ4のビューコントローラに関連付けられているビューが(正しく)回転します。ここで、iPhoneを回転した横向きに保ち、別のタブ(0、1、または2)をタップすると、回転したビューが表示されます(これは正しくなく、回避しようとしています)。

4

1 に答える 1

1

これはよく報告される「バグ」ですが、次のようにshouldAutorotateToInterfaceOrientation:セレクターを強制的にトリガーすることをお勧めします。

- (void)viewDidAppear:(BOOL)animated {
    UIWindow *window = [[UIApplication sharedApplication] keyWindow];
    UIView *view = [window.subviews objectAtIndex:0];
    [view removeFromSuperview];
    [window addSubview:view];
}
于 2011-01-31T16:24:59.267 に答える