Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在自定义MKAnnotationView中使用UILongPressGestureRecognitor时出现问题_Iphone_Annotations_Android Mapview_Gesture - Fatal编程技术网

Iphone 在自定义MKAnnotationView中使用UILongPressGestureRecognitor时出现问题

Iphone 在自定义MKAnnotationView中使用UILongPressGestureRecognitor时出现问题,iphone,annotations,android-mapview,gesture,Iphone,Annotations,Android Mapview,Gesture,在MKAnnotationView的自定义子类中使用UILongPressGestureRecognitor时遇到问题。回调只会间歇性地触发。如果我缩短minimumPressDuration,它会更频繁地触发。minimumPressDuration值为0.1时,它每次都会激发。值为0.4时,无论我将手指放在它上多长时间,它都不会开火。在0.2时,它是命中或未命中 如果我使用轻触手势(如下所示),效果很好。我在其他视图上使用LongPress手势,效果很好。我只是在MKAnnotationVi

在MKAnnotationView的自定义子类中使用UILongPressGestureRecognitor时遇到问题。回调只会间歇性地触发。如果我缩短minimumPressDuration,它会更频繁地触发。minimumPressDuration值为0.1时,它每次都会激发。值为0.4时,无论我将手指放在它上多长时间,它都不会开火。在0.2时,它是命中或未命中

如果我使用轻触手势(如下所示),效果很好。我在其他视图上使用LongPress手势,效果很好。我只是在MKAnnotationView上遇到了这个问题,所以我想知道annotationview上的一些其他内部事件回调是否会产生干扰(callout等)

我在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");
}

有谁知道为什么会发生这种情况

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

  • 这只是一个猜测*

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

  • 这只是一个猜测*
谢谢——这是一个很好的观点,但我认为内置的可拖动性只是在iOS4中添加的?至少,draggable属性只是在那时添加的。在3.2中是否有其他方法可以拖动它们?谢谢——这是一个很好的观点,但我认为内置的拖动功能只是在iOS4中添加的?至少,draggable属性只是在那时添加的。在3.2中是否有其他方法可以拖动它们?