我没有从核心运动输出,无论我使用拉或推方法。我在iPhone 4s iOS 8.4上使用了SWIFT2.0的Xcode 7.0 beta 6。
let manager = CMMotionManager()
manager.accelerometerUpdateInterval = 0.3
manager.startAccelerometerUpdates()
print(manager.accelerometerData?.acceleration.x)
manager.accelerometerUpdateInterval = 0.3
manager.startAccelerometerUpdatesToQueue(NSOperationQueue()) { (data: CMAccelerometerData?, error: NSError?) in
guard data != nil else {
print("There was an error: \(error)")
return
}
print(data!.acceleration.x)
}有人知道我做错了什么吗?谢谢。
发布于 2015-09-04 02:09:28
有趣的事..。我来这里是为了寻找这个问题的答案。;)
据我所知(我不是Swift或XCode方面的专家),问题是核心运动指令之间没有足够的时间来获取数据:如果您调用manager.startAccelerometerUpdates(),然后再过一段时间请求accelerometerData,那么您就没有问题了。如果在我的SpriteKit游戏中,我启动了GameViewController的viewDidLoad方法中的加速度计更新,然后在场景的didMoveToView方法中要求提供加速度计数据,那么我就会得到数据。但是,如果我启动加速度计,并以相同的方法要求数据,那么我什么也得不到(当我启动加速度计之前,在另一个场景,然后要求在下一个场景中的数据)。
我不知道这是正常的还是错误的,但至少我找到了一个暂时的解决方案:在获取数据之前尽可能多地给核心运动一些时间。
https://stackoverflow.com/questions/32337453
复制相似问题