Swift UITapGestureRecognizer Медленный

У меня возникают задержки с использованием UITapGestureRecognizer, я знаю, что это будет из-за: -

singleTap.requireGestureRecognizerToFail(doubleTap)

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

let singleTap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("singleTap:"))
singleTap.numberOfTapsRequired = 1
singleTap.requireGestureRecognizerToFail(doubleTap)
view.addGestureRecognizer(singleTap)

person Rachel    schedule 07.12.2015    source источник


Ответы (1)


Если вам требуется, чтобы двойное касание не удавалось до того, как можно было бы обнаружить одиночное касание, то вы никак не можете обойти это.

Не могли бы вы обойти это, потребовав, чтобы ваши одиночные касания не срабатывали до того, как их распознает двойное касание?

doubleTap.requireGestureRecognizerToFail(singleTap)

Это должно означать, что двойное касание будет срабатывать только в том случае, если одиночное касание не было обнаружено, по сути, приоритет отдавался одиночному касанию.

person liamnichols    schedule 07.12.2015
comment
Да, его ужин раздражает, так как мне нужно одно касание, чтобы добраться до места, и двойное нажатие, чтобы бежать к месту. Я попытался удалить ошибку, и мой персонаж просто не работает. Добавление ошибки doubleTap, к сожалению, не позволяет мне использовать doubleTap :( Я очень благодарен за вашу помощь, Лиам, спасибо! - person Rachel; 07.12.2015
comment
Ах да, извините, это имеет смысл! К сожалению, это дизайн системы распознавания жестов, поэтому здесь мало что можно сделать, кроме как использовать жесты другим способом для достижения того, чего вы хотите? Может быть, поиграйте с использованием разных типов жестов или, может быть, вместо этого проведите пальцем по экрану? Удачи! - person liamnichols; 07.12.2015
comment
Кроме того, из документации Apple: если вы хотите, чтобы эти два действия были взаимоисключающими, ваш распознаватель одного касания должен требовать, чтобы распознаватель двойного касания не работал. Однако ваши действия с одним касанием будут немного отставать от ввода пользователя, потому что распознаватель одиночного касания задерживается до тех пор, пока распознаватель двойного касания не откажет. (через, developer.apple.com/library. / ios / documentation / EventHandling /). Это как бы объясняет ваш сценарий и почему это происходит :) - person liamnichols; 07.12.2015