延迟从CMMotionManager接收设备动作更新

时间:2014-06-10 21:59:25

标签: ios objective-c core-motion uiaccelerometer cmmotionmanager

我有一个应用程序,其视图在加载时会获得常规的设备动作更新(每秒20次)并使用它们在屏幕上显示内容。使用旧的(已弃用的)UIAccelerometer代码可以正常工作。

我已将其移植到使用Core Motion和CMMotionManager,但我遇到的问题是每次加载其中一个视图(第一次除外),第一次收到的只有一个或两个更新大约二,然后他们开始按预期收到(每秒20次)。

视图中的相关代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    // Register to receive acceleration from motion manager.
    motionManager = [[CMMotionManager alloc] init];
    motionManager.deviceMotionUpdateInterval = 0.05;
    [motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue]
        withHandler:^(CMDeviceMotion *motion, NSError *error) {
            // Handle motion and update UI here.
        }
    ];
}

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    // Stop the motion updates.
    [motionManager stopDeviceMotionUpdates];
}

- (IBAction)exitView:(id)sender {
    // Stop the motion updates.
    [motionManager stopDeviceMotionUpdates];
    // Pop the view from the navigation controller.
}

我已经添加了一些NSLog语句,并且可以在视图加载后确认正在请求动态更新,并且处理程序仅接收更新,如上所述。

我有什么遗漏可以让CoreMotion版本的行为与旧版本相同,即没有延迟?

0 个答案:

没有答案