iOS5.0以降をサポートする必要のあるiPadアプリがあります。5.0/5.1では6.0とは異なる動作をするバグがあります。問題は、モーダルビューをプッシュするタブバーコントローラーのビューコントローラーであり、モーダルビューはnavigationControllerを介してフルスクリーンビューをプッシュします。問題は、全画面表示でiPadを回転させた場合、基になるビューコントローラー(タブバーコントローラー内の1つ)が回転しないことです。ここで、iOSバージョンの違いを分析します。
まず、問題のこのviewControllerは、shouldAutoRotateToInterfaceOrientation(YESを返します)とwillRotateToInterfaceOrientationおよびwillAnimateRotationToInterfaceOrientationを実装します。
iOS 6.0では、回転メソッド(willRotate ...&willAnimate ...)が呼び出されていないことに気付いたので、UIDeviceOrientationDidChangeNotification通知を受信するように登録し、その通知を受信した場合は2つのRotateメソッドからコードを実行します。他のメソッドは実行されていませんでした。これでiOS6.0の問題が修正されました。
問題は、5.0 / 5.1では回転メソッド(willRotate ...&willAnimate ...)が実行されているが、ビューが回転していないことです。このビューコントローラの上に「フルスクリーンビュー」が表示されず、iPadが回転すると、これら2つの方法が実行され、それに応じてビューが回転します。
助けてください。前もって感謝します。
上記以外で試したこと。
UIDeviceOrientationをチェックしてUIInterfaceOrientationに変換し、[self shouldAutorotateToInterfaceOrientation:xxx]を呼び出してみました。ビューはまだ間違って表示されます。