2

私のアプリにはUINavigationControllerがあり、回転をサポートしていません。ただし、回転をサポートする必要があるナビゲーションコントローラーの上にモーダルビューコントローラーを表示したいと思います。これは可能ですか?モーダルで表示されているViewControllerをオーバーライドしようとしshouldAutorotateToInterfaceOrientationましたが、機能していないようです。

4

3 に答える 3

1

shouldAutorotateToInterfaceOrientationモーダルビューコントローラーが表示されているときに戻るようYESに、ナビゲーションコントローラーshouldAutorotateToInterfaceOrientationをオーバーライドする必要があると思います。それ以外の場合YESは、モーダルビューコントローラーが表示されNOます。

于 2012-05-25T10:50:32.490 に答える
0

デバイスがデバイスの向きの通知(UIDeviceOrientationDidChangeNotification)を生成することを確認する必要があります。

確実に:

generateDeviceOrientationNotificationsがtrueに設定されています

Appleドキュメントから:

「ウィンドウオブジェクトは、現在の方向の変更に関連する作業の多くを実行します。ただし、ルートビューコントローラと連携して、方向の変更を行う必要があるかどうか、発生する場合は、応答するために追加のメソッドを呼び出す必要があるかどうかを判断します。このコントローラーがコンテナーである場合、オリエンテーションを行うかどうかを決定するのは子供に依存する可能性があります。」

したがって、ルートビューコントローラー(UINavigationController?)が回転をサポートしていない場合、アプリの起動時にこれがfalseに設定される可能性があります。その場合、必要に応じてオンに戻す必要があります。

UIDevice myDevice = [UIDevice currentDevice]; 
[myDevice beginGeneratingDeviceOrientationNotifications]; 
于 2012-05-25T10:57:58.657 に答える
0

別の投稿で答えを見つけました:ルートViewController内のUIViewControllerが回転していません

重要なのは

- (void)addChildViewController:(UIViewController *)childController

- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers

于 2012-05-27T07:45:20.907 に答える