сбой приложения, когда 'startDeviceMotionUpdatesToQueue' обратного вызова CMMotionManager - PullRequest
0 голосов
/ 22 мая 2018

В моем проекте я использовал CoreMotion, мой код в img.иногда это терпело крах, но я не могу повторить это, и я также не знаю почему .. кто-то может мне помочь?Меня долго мучили ...

startMotionManager:

enter image description here

handler

crash]

1 Ответ

0 голосов
/ 22 мая 2018
Please try this code

    import CoreMotion

    var motionManager: CMMotionManager?

        override func viewDidLoad() {
                super.viewDidLoad()
                motionManager = CMMotionManager()
                if motionManager?.isDeviceMotionAvailable == true {

                    motionManager?.deviceMotionUpdateInterval = 0.1;

                    let queue = OperationQueue()
                    motionManager?.startDeviceMotionUpdates(to: queue, withHandler: { [weak self] (motion, error) -> Void in

                        // Get the attitude of the device
                        if let attitude = motion?.attitude {
                            // Get the pitch (in radians) and convert to degrees.
                            // Import Darwin to get M_PI in Swift
                            print(attitude.pitch * 180.0/M_PI)
                            }
                    })

                    print("Device motion started")
                }
                else {
                    print("Device motion unavailable");
                }
                // Do any additional setup after loading the view, typically from a nib.
            }


based on attitude.pitch you can know Device angle and rotation on ( + & - )
...