Для длинного нажатия на шесть секунд используйте UILongPressGestureRecognizer
со свойством minimumPressDuration
, установленным на 6.
Напишите свой собственный распознаватель жестов (скажем, LongTappingGestureRecognizer
) для непрерывного постукивания в течение заданного периода; это не должно быть слишком сложно. Присвойте ему свойство, такое как UILongPressGestureRecognizer
minimumPressDuration
(скажем, minimumTappingDuration
) и свойство (скажем, maximumLiftTime
), которое определяет, как долго можно отрывать палец, прежде чем он не будет считаться длинным касанием. .
- Когда он впервые получит
touchesBegan:withEvent:
, запишите время.
- Когда он получает
touchesEnded:withEvent:
, запускается NSTimer
(таймер подъема), который отправляет распознавателю жестов сообщение об отмене (например, cancelRecognition
) после maximumLiftTime
,
- Когда он получает
touchesBegan:withEvent:
, когда есть время начала, отмените таймер подъема (если есть).
-
cancelRecognition
перейдет в сбойное состояние .
Существуют различные стратегии обработки распознавания, когда достигнут конец жеста после minimumTappingDuration
. Один из них - проверить в обработчиках touchesBegan:withEvent:
и touchesEnded:withEvent:
разницу между текущим временем и временем запуска> = minimumTappingDuration
. Проблема в том, что распознавание жеста займет больше времени, чем minimumTappingDuration
, если пользователь медленно нажимает, а при достижении minimumTappingDuration
палец не нажимает. Другой подход заключается в запуске другого NSTimer (таймера распознавания) при получении первого touchesBegan:withEvent:
, который вызовет переход в распознанное состояние и отменен в cancelRecognition
. Самое сложное в том, что делать, если при срабатывании таймера палец поднимается. Наилучшим подходом может быть комбинация двух, игнорирование таймера распознавания, если палец поднят.
Есть еще детали, но это суть. По сути, это распознаватель длинных нажатий, который позволяет пользователю на короткое время убирать палец с экрана. Вы можете использовать только распознаватель касаний и пропустить распознаватель длинных нажатий.