Motion Manager is not working in Swift

后端 未结 2 1273
花落未央
花落未央 2020-12-20 13:49

I am try to use motion manager in Swift but the log inside my update block never prints.

    var motionManager: CMMotionManager = CMMotionManager()
    motio         


        
2条回答
  •  無奈伤痛
    2020-12-20 14:27

    That's because the motion manager instance is being thrown out when the method returns. You should make a property on your class to contain the motion manager. Additionally, it looks like you were only changing the manger's accelerometerUpdateInterval and then monitoring device motion changes. You should set the deviceMotionUpdateInterval property instead.

    import CoreMotion
    
    class ViewController: UIViewController {
        let motionManager = CMMotionManager()
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            motionManager.deviceMotionUpdateInterval = 0.01
            motionManager.startDeviceMotionUpdates(to: OperationQueue.current!) { deviceManager, error in
                print("Test") // no print
            }
    
            print(motionManager.isDeviceMotionActive) // print false
        }
    }
    

提交回复
热议问题