2011-12-16 16 views
2

私はこの特定の動作を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に到達することはありません)。

+0

ルートビューコントローラーとモーダルコントローラーを持つ最小限のプロジェクトでは、表示されている動作が示されません。私はあなたがここに助けを必要とする場合は、コードの削除版を投稿する必要があると思う。 –

+0

ルートビューコントローラのshouldAutoRotateToInterfaceOrientationコードを投稿できますか? –

答えて

1

ここでは多くのお詫び申し上げます。これらのタイプのものではいつものように、その開発者(私)のエラー。他の誰かがここに来た場合に起こったことを投稿しています。

これは、サードパーティのアプリケーションで実装された静的ライブラリ用です。私はソースコードを持っていません(この場合、Flash)。いくつかの深刻なデバッグで明らかになったはずだったことがわかりました。私のライブラリを使用しているサードパーティのアプリケーションは、独自のshouldAutoRotate関数で疑問の計算をしており、特定の条件(正しくはありません)で-any- toInterfaceOrientation引数に対してNOを返しています。

関連する問題