【发布时间】:2016-11-02 14:51:27
【问题描述】:
我从 Objective-C 获得了以下代码,效果很好。
_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作为实例变量后它工作了。
标签: swift handler core-motion