运动经理不工作

时间:2016-06-19 15:29:37

标签: xcode swift swift2 ios9 cmmotionmanager

我试图让设备运动(俯仰,滚动,偏航),但是我的函数handleDeviceMotionUpdate没有启动(我在iphone 5s上尝试它),这里是代码:

import UIKit
import CoreMotion

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()






    var motionManager = CMMotionManager()
    motionManager.startDeviceMotionUpdates()
    motionManager.deviceMotionUpdateInterval = 0.1


    motionManager.startDeviceMotionUpdatesToQueue(
        NSOperationQueue.currentQueue()!, withHandler: {
            (deviceMotion, error) -> Void in

            if(error == nil) {
                self.DeviceMotionUpdate(deviceMotion!)
            } else {
                print("error")
            }
    })

}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}

func DeviceMotionUpdate(deviceMotion:CMDeviceMotion) {
    print("function launched")
    var attitude = deviceMotion.attitude
    var roll = (attitude.roll)
    var pitch = (attitude.pitch)
    var yaw = (attitude.yaw)
    print("Roll: \(roll), Pitch: \(pitch), Yaw:  (yaw)")

}



}

我没有在startDeviceMotionUpdatesToQueue中收到错误。我在motionManager.deviceMotionActive和motionManager.deviceMotionAvailable上实现了

1 个答案:

答案 0 :(得分:6)

运行viewDidLoad方法后,您的motionManager可能会被销毁。尝试使motionManager成为一个类属性。

class ViewController: UIViewController {
    var motionManager = CMMotionManager()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.motionManager.startDeviceMotionUpdates()

        ...