У меня есть следующий код от Objective-C, он отлично работает.Swift 3 CMMotionManager startGyroUpdates не работает
_motionManager = [[CMMotionManager alloc] init];
_motionManager.gyroUpdateInterval = 1.0/60.0;
[_motionManager startGyroUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMGyroData *gyroData, NSError *error)
{
xAcceleration = gyroData.rotationRate.x;
yAcceleration = gyroData.rotationRate.y;
[self acceleratorUpdates];
}];
И я попытался преобразовать его в Swift 3, но он не работает, он дает все виды ошибок. До сих пор я получил этот код.
let motionManager = CMMotionManager()
motionManager.gyroUpdateInterval = 1.0/60.0
motionManager.startGyroUpdates(to: OperationQueue.current!, withHandler: {(gyroData: CMGyroData, error: Error)
var xAcceleration = gyroData.rotationRate.x
var yAcceleration = gyroData.rotationRate.y
print("xAcceleration: ", xAcceleration, "yAcceleration: ", yAcceleration)
})
Я думаю, что у меня что-то отсутствует в части withHandler. В документации сказано следующее: -> Пустота после обработчика, но это не помогло. Все коды из Интернета являются Swift 2.
Он работал после создания 'motionManager' в качестве переменной экземпляра. –