Как получить доступ и сохранить положительные и отрицательные значения оси Y для гироскопа? - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь запустить два разных сегмента в зависимости от значения оси Y на гироскопе. По сути, наклон вверх (в левом ландшафте) вызовет VC "Pointed Up", с + y и наклона вниз, VC "Pointed Down" со значением -y.

После того, как эти VC сработали, мне нужно прекратить обновления гироскопа, пока один из двух сработавших VC не будет перемотан после соответствующих задержек.

Затем перезапустите обновления гироскопа.

Я попытался создать оператор if / else и представить эти значения в переменной и возвратил его, но когда я пытаюсь вызвать возвращаемое значение, возникает ошибка "Результат вызова startGyroScope () не используется"

//Declared just after class is initialised
var correctAnswer = true
var motionManager = CMMotionManager()

...

override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        startGyroScope()
        let answerGiven = startGyroScope()
        performAnswerSegue(triggeredAnswer: answerGiven)   
    }

...

    func startGyroScope() -> Bool {

        var pickedAnswer: Bool = true

        motionManager.gyroUpdateInterval = 0.25
        motionManager.startGyroUpdates(to: OperationQueue.current!) { (data, error) in
            if let gyroData = data{

            let y = gyroData.rotationRate.y

                            //User tilted for true
                            if y > 2 {
                                pickedAnswer = true
                                self.motionManager.stopGyroUpdates()
                                DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {
                                    self.motionManager.startGyroUpdates()
                                }

                            }

                                //User tilted for false
                            else if y < -2 {
                                pickedAnswer = false
                                self.motionManager.stopGyroUpdates()
                                DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {
                                    self.motionManager.startGyroUpdates()
                                }

                            }
                }

            }
        return pickedAnswer
}

...

func performAnswerSegue(triggeredAnswer: Bool) {

    if correctAnswer == triggeredAnswer {
        performSegue(withIdentifier: "pointedUpVC", sender: self)
    }

    else if correctAnswer != triggeredAnswer{
         performSegue(withIdentifier: "pointedDownVC", sender: self)
    }

    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {
        self.dismiss(animated: true, completion: nil)
    }
}

гироскоп Раскадровка

...