MKAnnotationView 的自定义子类中的 UILongPressGestureRecognizer 出现问题。回调只是间歇性地触发。如果我使 minimumPressDuration 更短,它会更频繁地触发。当 minimumPressDuration 值为 0.1 时,它每次都会触发。值为 0.4 时,无论我将手指放在它上面多久,它都不会触发。在 0.2 时,它是命中或未命中。
如果我使用 Tap 手势(如下所示),它可以正常工作。我在其他视图上使用 LongPress 手势,它们工作正常。我只是在 MKAnnotationView 上遇到了这个问题,所以我想知道 AnnotationViews 上的其他一些内部事件回调是否正在干扰(标注等)。
我在 iOS4(sim 和手机)和 3.2(sim,没有设备)上看到了这个问题。
这是我创建手势识别器的方式:
#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 大师都知道为什么会发生这种情况吗?