Core Motion无法在Xcode 7 Swift 2.0中运行(Core Motion not working in Xcode 7 Swift 2.0)

编程入门 行业动态 更新时间:2024-10-28 20:31:26
Core Motion无法在Xcode 7 Swift 2.0中运行(Core Motion not working in Xcode 7 Swift 2.0)

无论我使用pull或push方法,我都没有得到Core Motion的输出。 我在iPhone 4s iOS 8.4上使用Xcode 7.0 beta 6和Swift 2.0。

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) }

谁知道我做错了什么? 谢谢。

I get no output from Core Motion regardless I use pull or push method. I'm using Xcode 7.0 beta 6 with Swift 2.0 on iPhone 4s iOS 8.4.

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) }

Anybody knows what I'm doing wrong? Thanks.

最满意答案

有趣的事情......我来到这里寻找这个问题的答案。 ;)

据我所知(我不是Swift或XCode的专家)问题是核心动作的指令之间没有足够的时间来获取数据:如果你调用manager.startAccelerometerUpdates()然后,过了一会儿,问一下accelerometerData,那你就没问题了。 如果在我的SpriteKit游戏中,我在GameViewController的viewDidLoad方法中启动加速度计更新,并且我在场景的didMoveToView方法中询问加速度计数据,然后我得到数据。 但是,如果我启动加速度计并以相同的方法询问数据,那么我什么也得不到(当我在转换到其他场景之前启动加速度计然后在下一个场景中询问数据时,我什么也得不到)。

我不知道这是正常还是错误,但至少我找到了一个时间解决方案:在获取数据之前尽可能多地给核心动作。

Funny thing... I came here looking for answers to this very same question. ;)

As far as I can tell (I am no expert in Swift or XCode) the problem is that there is not enough time between instructions for core-motion to get the data: if you call manager.startAccelerometerUpdates() and then, after a while, ask for the accelerometerData, then you'll have no problem. If in my SpriteKit game I start accelerometer updates at the viewDidLoad method of a GameViewController and I ask for the accelerometer data at the didMoveToView method of a Scene, then I get the data. But if I start the accelerometer and ask for the data in the same method, then I get nothing (I get nothing also when I start the accelerometer right before a transition to other Scene and then ask for the data in the next Scene).

I don't know if this is normal or a bug, but at least I found a temporal solution: give core-motion as much time as possible before getting the data.

更多推荐

本文发布于:2023-08-08 01:02:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1466705.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Xcode   Motion   Core   working   Swift

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!