我在我的项目中包含了 CoreMotion 框架,并在我的视图控制器的标题中导入了 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”日志。另外,我尝试在运动处理程序块中设置断点,它永远不会停在那里。但我确实得到了“merde!” 日志,所以这段代码肯定会被执行。
为什么核心运动不调用我的处理程序?我的 iPhone 4 可以正常工作。加速度计和陀螺仪可以在其他应用程序中完美运行。没有硬件错误。