xcode - 运动管理器不工作

原文 标签 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 上为真

最佳答案

您的 motionManager 可能会在运行完 viewDidLoad 方法后被销毁。尝试将 motionManager 设为类属性。

class ViewController: UIViewController {
    var motionManager = CMMotionManager()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.motionManager.startDeviceMotionUpdates()

        ...

关于xcode - 运动管理器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37908854/

相关文章:

swift - Xcode:将对象与View Controller边距对齐

android - 相当于XCode Instruments的Android

ios - 如何等到位置经理代表 swift 调用?

swift - 为什么0的乘法逆数会导致无穷大?

ios - 带有多节的TableView的Swift NSUserDefault?

swift - 在Swift SpriteKit中更改计时器的时间间隔

ios - XCode:无法将UITableview嵌入UIViewController中

iphone - Storyboard 自动布局: “trailing space to container” vs “bottom space to bottom layout”

ios - 覆盖Swift 2.0和XCode 7的代码后,UITableView中的空白行

objective-c - 错误消息无法启动+ IOS/cordova