RSS

iPhone:iOS4.0の回転ロックでハマったこと

iOS4.0から搭載された回転ロックは優秀で寝転がってもSafariが読める!,むしろSafariのために搭載されたと思うぐらい.だけど,この回転ロックのせいで開発が難航してしまった.

iPhoneの向きを取得するには以下のように書く.
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
iPhoneをいくら振り回してもUIDeviceOrientationPortrait(通常の縦持ち方)しか返ってこない.バージョンが変わってUIApplicationでないと取れないの!?とかAPIが変わった?とか色々悩んだけど,回転ロックしているから当たり前といえば当たり前.これに気づくのに小一時間悩んだ.回転ロックのオンオフを調べるAPIがあるかもしれないけど,今のところ見つけられてない.向きを扱うアプリだと,回転ロックに気をつけないといけない.

回転ロックを検出するAPIが見つからないので,判定コード(ScreenStatus.h/m)を作った.原理は回転ロック中はUIDeviceOrientationPortraitしか戻ってこないので,実際の加速度センサの値と比べて判定する.そのため,通常の縦持ちだと,ロックかどうかは判定できない.ダウンロードはこちらから.ライセンスは使った分だけ隣人に昼飯を奢ること.

-(BOOL)isScreenLock;
画面回転ロックならばYES, そうでなければNOを返す

-(UIDeviceOrientation)orientation;
UIDeviceの返ってくる向き

-(UIDeviceOrientation)physicalOrientation;
加速度センサから計算した向き

[注意]initで加速度センサをONにするので,忘れずにreleaseする

Bookmark and Share

0 コメント: