Избегайте срабатывания касанийНачало: до тех пор, пока распознаватель жестов не выйдет из строя

Я делаю игру для iPad, в которой игрок проводит пальцем вверх, вниз, влево или вправо, чтобы переместить персонажа. Атака контролируется touchesBegan:withEvent:

Моя проблема в том, что персонаж атакует всякий раз, когда он двигается.

Есть ли способ настроить жест смахивания, чтобы код не запускался touchesBegan:withEvent:, пока не увидит, является ли движение началом смахивания или нет?


person jking14    schedule 17.07.2014    source источник
comment
Вы просто можете использовать bool.   -  person user523234    schedule 17.07.2014


Ответы (1)


Это не слишком простая задача. Не используя какие-то пользовательские жесты, я бы посоветовал вам попробовать комбинацию UISwipeGestureRecognizer и UILongPressGestureRecognizer. Я знаю, что это звучит глупо, но это не так: UILongPressGestureRecognizer действует почти так же, как жест панорамирования, поэтому, даже если палец перетаскивается, вы будете получать события. Вам нужно установить правильную минимальную продолжительность до срабатывания (зависит от жеста смахивания) и некоторую большую минимальную продолжительность перетаскивания, чтобы она не отменялась при перетаскивании. Затем вам нужно удалить методы события касания и переместить код в действие жеста длительного нажатия.

Чтобы объяснить результат, ваш жест длительного нажатия (если он настроен правильно) будет работать так же, как события касания, за исключением того, что он будет ждать указанную продолжительность. Если в течение этого времени будет обнаружено пролистывание, ваш жест длительного нажатия не сработает. Кажется, то, что нужно...

person Matic Oblak    schedule 17.07.2014