1

iPad アプリがすべての向きをサポートするセットアップがあります。アプリケーションの一部では、タップはナビゲーション コントローラーを必要とするモーダル ビュー コントローラーの表示をトリガーします。だから私は基本的にやっています:

UIViewController *myViewController = [[UIViewController alloc] initWithNibName:@"MyView" bundle:nil];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:myViewController];
NSLog(@"%d", nav.interfaceOrientation);

[window.rootViewController presentModalViewController:nav animated:YES];

これは、iPad が縦向き (ホーム ボタン) の場合に正常に機能します。他の方向では、モーダル ビューは常にデバイスの現在の底面ではなく、ホーム ボタンから縦向きに表示されます。

ナビゲーション コントローラーを完全にスキップしてmyViewControllerモーダルに表示すると、正しく表示されます。

そこで、UINavigationViewController をサブクラス化し、shouldAutorotate:andsupportedInterfaceOrientations:メソッドを明示的にオーバーライドしようとしましたが、効果はありません。興味深いことに、viewWillAppearメソッドをオーバーライドしてプロパティの値をログに記録すると、上記のコードからアクセスしたときに正しい値が返されたとしても、interfaceOrientation常に返されます。1

Info.plist ですべての向きがサポートされていることも確認しました。

では、この動作を引き起こすために他に何が起こっているのでしょうか? どんな助けでも大歓迎です。

4

1 に答える 1