0

ユーザーがiOSデバイスを縦向きから横向きに回転するたびに、全画面表示を表示する必要があります。縦表示はTabBarとNavigationController内の表示です。UITabBarController-> UINavigationController内でViewControllerの回転イベントを取得するにはどうすればいいですか?

ただし、willRotateToInterfaceOrientation:duration:は決して呼び出されません。私は、ViewControllerをUIDeviceOrientationDidChangeNotificationイベントのObserverとして追加することもテストしましたが、この通知は未定義の方向でも呼び出されます。

与えられたタスクにはどのような方法が最適ですか?

答えて

1

UIApplicationWillChangeStatusBarOrientationNotificationUIApplicationDidChangeStatusBarOrientationNotificationの通知もあります。

userInfo辞書には、UIInterfaceOrientationの値をカプセル化するNSNumberオブジェクトが含まれています。 UIApplicationStatusBarOrientationUserInfoKeyを使用してこの値にアクセスしてください。

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(didRotate:) 
               name:UIApplicationDidChangeStatusBarOrientationNotification 
               object:nil]; 

- (void) didRotate:(NSNotification *)notification{ 
    NSNumber *num = [[notification userInfo] objectForKey:@"UIApplicationStatusBarOrientationUserInfoKey"]; 
    NSLog(@"%d", [num intValue]); 
} 
+0

ありがとうございます。しかし、TabBarControllerが方向の変更に直接反応しないため(ポートレートのみが許可されるため)、ステータスバーが決して回転しないため、UIApplicationWillChangeStatusBarOrientationNotificationは呼び出されません。 – lambruscoAcido