我尝试在Swift中使用运动管理器,但是更新块内的日志从不打印。
var motionManager: CMMotionManager = CMMotionManager() motionManager.accelerometerUpdateInterval = 0.01 println(motionManager.deviceMotionAvailable) // print true println(motionManager.deviceMotionActive) // print false motionManager.startDeviceMotionUpdatesToQueue(NSOperationQueue.currentQueue(), withHandler:{ deviceManager, error in println("Test") // no print }) println(motionManager.deviceMotionActive) // print false
我的Objective-C实施效果很好。有人知道为什么没有调用我的更新块吗?
那是因为当方法返回时,运动管理器实例被抛出了。您应该在类上创建一个属性以包含运动管理器。此外,您似乎只是在更改管理器accelerometerUpdateInterval,然后监视设备运动的变化。您应该deviceMotionUpdateInterval改为设置属性。
accelerometerUpdateInterval
deviceMotionUpdateInterval
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 } }