1

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 大师都知道为什么会发生这种情况吗?

4

1 回答 1

1

据我所知,3.2 和 iOS 4 中的标记已经附加了一个长按手势来处理标记拖动。会不会是干扰了您的长按手势识别器?也许这就是为什么较短的持续时间有效的原因;它在内置的长按识别器之前捕捉到手势。

  • 这只是一个猜测 *
于 2010-09-15T08:34:52.297 回答