Возникли проблемы с UILongPressGestureRecognizer в пользовательском подклассе MKAnnotationView.Обратный вызов срабатывает только с перерывами.Если я уменьшу минимальную длительность PressDuration, она будет срабатывать чаще.При минимальном значении 0.1, он срабатывает каждый раз.При значении 0,4 он никогда не срабатывает, независимо от того, как долго я на нем держу палец.На уровне 0,2 это удар или промах.
Если я использую жест касания (как показано ниже), он работает нормально.Я использую жесты LongPress для других представлений, и они работают нормально.Эта проблема возникает только в MKAnnotationView, поэтому мне интересно, не мешают ли некоторые другие внутренние обратные вызовы событий в AnnotationViews (обратный вызов и т. Д.).
Я вижу эту проблему на iOS4 (sim и телефон) и 3.2 (сим, устройства нет).
Вот как я создаю распознаватель жестов:
#define USE_LONG_PRESS 1
#define USE_TAP 0
#if USE_LONG_PRESS
UILongPressGestureRecognizer *longPressGR =
[[UILongPressGestureRecognizer alloc] initWithTarget:self
action:@selector(handleLongPress:)];
longPressGR.minimumPressDuration = 0.2;
[self addGestureRecognizer:longPressGR];
[longPressGR release];
#endif
#if USE_TAP
UITapGestureRecognizer *tapGR =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleTap:)];
[self addGestureRecognizer:tapGR];
[tapGR release];
#endif
И методы обратного вызова определены в этом классе какследует:
- (void)handleLongPress:(UIGestureRecognizer *)gestureRecognizer {
NSLog(@"LONG PRESS");
}
- (void)handleTap:(UIGestureRecognizer *)gestureRecognizer {
NSLog(@"TAP");
}
Любой iPhone-гуру знает, почему это может происходить?