私はこの特定の動作をiOSで理解しようとすると完全に迷ってしまいました。 14時間後、無数のStack Overflowに関する質問を読んで、関連するすべてのAppleドキュメントを閲覧すると、私はまだ非常に混乱しているので、具体的な例が専門家の助けになると思っています。iphoneとipadの間のmodalviewcontrollerの向きが異なる
私が提示していますモーダルビューコントローラ持って(この問題行動は、Appleの既成modalviewcontrollersのいずれかに当てはまる、これは関係していないようですが。)
簡単に言うと、私が風景に回転させ、デバイスを持っています。私が電話した場合:
[rootViewController presentModalViewController:modalVC animated:YES];
iPhoneでは、期待どおりに表示されます。予想通りiPadで 、それはまた、(グレーアウトバックグラウンドを持つページとして含まれる)
を提示された後、その内蔵のボタン「行って」のmodalVCのデリゲートでは、私が呼ん:
[rootViewController dissmissModalViewControllerAnimated: YES];
症状が始まるのはここ
です:iPhoneで
、かかわらず rootViewControllerのshouldAutoRotateToInterfaceOrientationがYESを返すまたはNO、ステータスバーがすぐに縦向きに入るかどうか。次にモーダルが間違った(ポートレート、右へ)方向に滑り落ち、その基礎となるrootViewControllerがshouldAutoRotateの問い合わせを受けずにポートレートで表示されるようになりました。
iPadでは、予想通りにモーダルが解除され、向きが予期されたとおりに残ります。
私はここで何を理解していませんか? modalViewControllerのshouldAUtoRotateの動作をオーバーライドしたり、さまざまなコンテナviewControllersを使用したりするなど、多くのことを試しました。唯一の効果的な解決策は、スタブのUIViewControllerを作成し、ビューをkeyWindowにアタッチし、代わりにモーダルを表示することでした。これにより問題が解決されますが、多くのAppleおよびオフサイトの記事では、これが間違っていると宣言しています(正当な理由があるため、適切なイベントの伝播がそのスタブのUIViewControllerに到達することはありません)。
ルートビューコントローラーとモーダルコントローラーを持つ最小限のプロジェクトでは、表示されている動作が示されません。私はあなたがここに助けを必要とする場合は、コードの削除版を投稿する必要があると思う。 –
ルートビューコントローラのshouldAutoRotateToInterfaceOrientationコードを投稿できますか? –