iPhone アプリケーションを iPad で実行すると、向きの変更のサポートに関して奇妙な動作が表示されます。
アプリはビュー コントローラー (引数のためにビュー A と呼びます) とナビゲーション コントローラーで起動し、shouldAutorotateToInterfaceOrientation は縦向きの場合のみ YES を返します。ナビゲーション コントローラーにビュー コントローラー (ビュー B) をプッシュします。ビュー コントローラーは、縦向きの場合のみ YES を返します。次に、すべての回転をサポートするナビゲーション コントローラーに別のビュー コントローラー (ビュー C) をプッシュし、回転する方向に基づいて画面上のアイテムを調整します。
これを iPhone シミュレーターとデバイスで実行すると、ビュー C で横向きに回転し、[戻る] ボタンをタップしてビュー B に戻ると、正しい動作が行われ、ビュー B が縦向きモードに戻ります。(シミュレーターでは、シミュレーターを自動的に縦向きに回転させます。)
私が経験している問題は、iPad シミュレーターとデバイスでまったく同じ一連のイベントを実行すると、表示されるビュー B が回転して縦向きに戻らず、ナビゲーション コントローラーがまだビュー C の情報を表示していることです。戻るボタンをタップすると、ビューは同じままですが、ナビゲーション コントローラーはビュー B に対して通常の状態を示します (ただし、すべて横向きモードのままです)。次に、戻るボタンをもう一度タップすると、ビュー A がビュー B のナビゲーション バー アイテムの下に表示され、最後にもう一度タップすると、ナビゲーション バー A のアイテムが表示されたビュー A に移動します。
iPad でビュー B に移動して回転を開始すると、縦向きモードになるまで shouldAutorotateToInterfaceOrientation が NO で起動し、その後すべてが通常に戻ります。
このアプリケーションは、iPhone SDK の最新リリース バージョンを使用してビルドされており、ビルド設定は次のとおりです: iPhone Simulator 4.0 のベース SDK、iPhone のターゲット デバイス ファミリ、iPhone OS 3.1.3 の iPhone OS 展開ターゲット。
何か案は?