1

我目前正在尝试开发一个从 CMMotionManager 中提取磁力计数据的 iOS 应用程序。我创建了一个非常简单的测试应用程序,但即使是该应用程序也无法在我的 iPhone 5 上运行。代码如下:

- (void)viewDidLoad
{
    [super viewDidLoad];

    CMMotionManager *motionManager = [[CMMotionManager alloc] init];

    [motionManager setMagnetometerUpdateInterval:1.0/30.0f];
    [motionManager  startMagnetometerUpdatesToQueue:[[NSOperationQueue alloc] init]
                    withHandler:^(CMMagnetometerData *magnetometerData, NSError *error) {
        NSLog(@"eek");
    }];
}

问题是处理程序根本不会被调用。同样,调用[motionManager startMagnetometerUpdates]然后轮询magnetometerData也不起作用(它返回 nil)。执行[motionManager isMagnetometerActive]结果总是false.

我被困在这里,有什么想法吗?我不明白为什么代码不应该工作。我必须以任何方式首先请求访问指南针吗?CMMotionManager 的文档除了我所做的事情之外没有提及任何内容。

4

1 回答 1

4

我认为你motionManager会自动发布。添加实例变量或属性以保留运动管理器。

还要检查是否magnetometerAvailable返回 YES,否则您的设备可能不支持磁力计。

于 2013-12-04T23:43:08.843 回答