プロジェクトに CoreMotion フレームワークを含め、View Controller のヘッダーに CoreMotion フレームワークをインポートしました。
#import <CoreMotion/CoreMotion.h>
-viewDidLoad には、iOS 4.3 を搭載した iPhone 4 で実行するこの簡単なテスト コードがあります。
- (void)viewDidLoad {
[super viewDidLoad];
CMMotionManager *motionManager = [[CMMotionManager alloc] init];
[motionManager setDeviceMotionUpdateInterval:0.1];
CMDeviceMotionHandler motionHandler = ^(CMDeviceMotion *motion, NSError *error) {
NSLog(@"foo");
};
[motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:motionHandler];
NSLog(@"merde!");
}
デバイスでプロジェクトを実行して移動すると、「foo」ログが表示されません。また、モーション ハンドラ ブロックにブレークポイントを設定しようとしましたが、そこで停止することはありません。しかし、私は「メルデ!」を手に入れます。ログに記録されるため、このコードは確実に実行されます。
コアモーションがハンドラーを呼び出さないのはなぜですか? 私のiPhone 4は機能しています。加速度計とジャイロは、他のアプリで完全に機能します。ハードウェアのバグはありません。