Как обрабатывать долгое нажатие?

Пишу программу в Xcode используя SpriteKit на языке swift, и у меня появилась проблема, я не понял как обрабатывать долгие нажатия, я знаю что в языке уже есть встроенные методы для нажатий (например:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {})

TouchesBegan обрабатывает одиночные нажатия а у меня в игре я сделал что то на подобии джойстика, и мне надо сделать так: сколько кнопку держишь столько объект и двигается. Я не понимаю как это реализовать и какую функцию для этого использовать, помогите пожалуйста.


Ответы (1 шт):

Автор решения: Oleg Soloviev

Нужно в touchesBegan определить, где произошло нажатие и если оно на нужной кнопке, то начать движение. Затем в touchesEnded точно также обработать прекращение нажатия. В touchesCancelled вызвать touchesEnded.

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        guard let touch = touches.first else { return }
        let location = touch.location(in: layer) // нужный слой игры
        let touchLocation = touch.location(in: self)
        if let body = nodes(at: touchLocation).first, body.name == "BUTTON" { ... }
}
→ Ссылка