Проблема распознавания жестов при длинном нажатии
В Интерфейсном Разработчике я добавил распознаватель жестов пресса в MKMapView.
Событие отправляется через 1 секунду (я использую его, чтобы добавить значок на карту). Я проверил поведение "Отмена касаний в поле зрения" моего распознавателя жестов, но моя проблема в том, что после распознавания длинного нажатия жеста, если вы удерживаете палец на экране и перетаскиваете его на вид карты, событие (на долгое время) нажатие) будет непрерывно передаваться при перетаскивании, как если бы это был фактически распознаватель жестов перетаскивания, в результате чего на мою карту были добавлены десятки пинов...
Как я могу это исправить?
Спасибо.
1 ответ
Согласно документации:
Длинные нажатия жесты являются непрерывными. Жест начинается (UIGestureRecognizerStateBegan), когда количество допустимых пальцев (numberOfTouchesRequired) было нажато в течение указанного периода (минимальная длительность) и касания не выходят за пределы допустимого диапазона движения (allowableMovement). Распознаватель жестов переходит в состояние "Изменение" при каждом перемещении пальца и заканчивается (UIGestureRecognizerStateEnded) при поднятии любого из пальцев.
С выделенным важным моментом.
Я полагаю, что вы не можете фильтровать состояние в методе делегата вашего распознавателя жестов.
Вам понадобится что-то вроде этого:
- (void)longPressGestureRecognizerStateChanged:(UIGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
// do your stuff...
}
}