Обнаружение толчкового движения

Я пытаюсь определить, когда вся левая сторона iPhone ударилась. Вот что у меня есть до сих пор:

let manager = CMMotionManager()

override func viewDidLoad() {
    super.viewDidLoad()

    if manager.deviceMotionAvailable {
        manager.deviceMotionUpdateInterval = 0.02
        manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue()) {
            [weak self] (data: CMDeviceMotion!, error: NSError!) in
            if data.userAcceleration.x > 2 {
                // Perform action
            }
        }
    }
}

Приведенный выше код работает, пока я нажимаю на верхний левый угол телефона. Однако, если я попытаюсь толкнуть весь телефон прямо влево по прямой линии, это редко, если вообще когда-либо, сработает. Есть ли что-то, что мне здесь не хватает?

Спасибо!


person A. McCoy    schedule 18.02.2015    source источник


Ответы (1)


if data.userAcceleration.x > 2 {
            // Perform action
        }

Сделайте 2, скажем, 1,5 или меньше, потому что 2 требует очень быстрого ускорения.

person Yordi Lorenzo    schedule 18.02.2015
comment
Изменение его на 1 помогло. Возможно, придется немного настроить его, но это огромное улучшение. Спасибо! - person A. McCoy; 18.02.2015
comment
А что, если вы хотите встряхнуть и ударить? - person Jude Michael Murphy; 12.05.2016