Отношение CoreMotion iOS 5 с опорным кадром не работает

я пробую новые функции CoreMotion, прежде всего возможность установить ссылочный фрейм, но если я использую DeviceMotionHandler и опорный фрейм, установленный на CMAttitudeReferenceFrameXTrueNorthZVertical, на выходе получается что-то из CMAttitudeReferenceFrameXArbitraryCorrectedZVertical. Я запускаю приложение с iphone, всегда в одном и том же повороте по курсу относительно моего стола, и я тестирую разные начальное вращение по рысканью, но результат всегда один и тот же.

motionManager = [[CMMotionManager alloc] init];
motionManager.showsDeviceMovementDisplay = YES;
motionManager.deviceMotionUpdateInterval = 1.0/60.0;    

CMDeviceMotionHandler  motionHandler = ^ (CMDeviceMotion *motion, NSError *error) {
    NSLog(@"%f      %f         %f", motion.attitude.pitch, motion.attitude.roll, motion.attitude.yaw);
};

[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical toQueue:[NSOperationQueue currentQueue] withHandler:motionHandler];

Я нашел решение своей проблемы, но не могу понять, почему предыдущий код не работает. Я добавляю только переменную CMAttitude * a в motionHandler.

- (void)viewDidLoad
{
[super viewDidLoad];
motionManager = [[CMMotionManager alloc] init];
motionManager.showsDeviceMovementDisplay = YES;
motionManager.deviceMotionUpdateInterval = 1.0/60.0;    

CMDeviceMotionHandler  motionHandler = ^ (CMDeviceMotion *motion, NSError *error) {
    CMAttitude *a = motionManager.deviceMotion.attitude;
    labelAngle.text = [NSString stringWithFormat:@"%f      %f         %f",a.pitch, a.roll,a.yaw];
    labelAngle2.text = [NSString stringWithFormat:@"%f       %f      %f", motion.attitude.pitch, motion.attitude.roll, motion.attitude.yaw];
};

[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical toQueue:[NSOperationQueue currentQueue] withHandler:motionHandler];}
6
задан Batti 30 October 2011 в 17:48
поделиться