Проблема распознавания жестов при длинном нажатии

В Интерфейсном Разработчике я добавил распознаватель жестов пресса в MKMapView.

Событие отправляется через 1 секунду (я использую его, чтобы добавить значок на карту). Я проверил поведение "Отмена касаний в поле зрения" моего распознавателя жестов, но моя проблема в том, что после распознавания длинного нажатия жеста, если вы удерживаете палец на экране и перетаскиваете его на вид карты, событие (на долгое время) нажатие) будет непрерывно передаваться при перетаскивании, как если бы это был фактически распознаватель жестов перетаскивания, в результате чего на мою карту были добавлены десятки пинов...

Как я могу это исправить?

Спасибо.

1 ответ

Решение

Согласно документации:

Длинные нажатия жесты являются непрерывными. Жест начинается (UIGestureRecognizerStateBegan), когда количество допустимых пальцев (numberOfTouchesRequired) было нажато в течение указанного периода (минимальная длительность) и касания не выходят за пределы допустимого диапазона движения (allowableMovement). Распознаватель жестов переходит в состояние "Изменение" при каждом перемещении пальца и заканчивается (UIGestureRecognizerStateEnded) при поднятии любого из пальцев.

С выделенным важным моментом.

Я полагаю, что вы не можете фильтровать состояние в методе делегата вашего распознавателя жестов.

Вам понадобится что-то вроде этого:

- (void)longPressGestureRecognizerStateChanged:(UIGestureRecognizer *)recognizer {
    if (recognizer.state == UIGestureRecognizerStateBegan) {
       // do your stuff...
    }
}
Другие вопросы по тегам