デバイスの回転を検出できなくなった場合 : Objective-C プログラミング

PROGRAM


デバイスの回転を検出できなくなった場合

iPad でデバイスの回転を検知して制御するプログラムを作成していたところ、ある操作を行うと iPad の画面が回転しなくなってしまうことがありました。

iPad で UISplitView を使用して、iPhone デバイスの回転を検出する で記した方法でデバイスの回転を検知していたのですけど、調べてみると、UIDevice の "beginGeneratingDeviceOrientationNotifications" と "endGeneratingDeviceOrientationNotifications" の呼び出しが対になっていないことが原因でした。

 

具体的には "endGeneratingDeviceOrientationNotifications" が 2 回呼び出されてしまっていたため、その影響で、どうやら適切な回転通知が届かなくなってしまったような感じです。

ちなみに今回はユニバーサルバイナリでの出来事だったのですけど、同じコードでも iPhone では影響なく回転を検知できていた感じでした。

なんにせよ、"beginGeneratingDeviceOrientationNotifications" と "endGeneratingDeviceOrientationNotifications" メソッドを利用する場合には、必ず呼び出し回数が同数になるように、注意を払ってコーディングする必要がありそうです。

[ もどる ]