iOS:是否可以在MKMapView中添加三击手势识别器?

Rei*_*ner 4 mkmapview uigesturerecognizer ios

我有一个MKMapView,双击时放大(默认行为).我想在地图视图中添加三击手势识别器,再次缩小到某个初始缩放级别.
问题是内置双击识别器首先触发.为了延迟这一点,必须以某种方式访问​​双击识别器,但至少在iOS6中,该view属性gestureRecognizers不包含地图视图的双击识别器.
那么,是否可以以某种方式延迟双击识别器以便允许三抽头识别器首先触发?

rog*_*rog 7

退房的实例方法requireGestureRecognizerToFail的UIGestureRecognizer类.

http://developer.apple.com/library/ios/documentation/uikit/reference/UIGestureRecognizer_Class/Reference/Reference.html#//apple_ref/occ/instm/UIGestureRecognizer/requireGestureRecognizerToFail:

在接收器和另一个手势识别器之间创建依赖关系.

例如:

[doubleTap requireGestureRecognizerToFail:tripleTap];
Run Code Online (Sandbox Code Playgroud)

更新

经过一段时间的闲逛后,我得到了这样的工作(假设你有一个MKMapView名字mapView):

UITapGestureRecognizer *tripleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTripleTap:)];
tripleTap.numberOfTapsRequired = 3;
[mapView.subviews[0] addGestureRecognizer:tripleTap];

UIView *tempMapView = mapView.subviews[0];
NSArray *mapGestures = tempMapView.gestureRecognizers;
UITapGestureRecognizer *tempMapDoubleTap = mapGestures[0];
[tempMapDoubleTap requireGestureRecognizerToFail:tripleTap];
NSLog(@"%@", mapGestures);
Run Code Online (Sandbox Code Playgroud)

三重水龙头选择器:

- (void)handleTripleTap:(UIGestureRecognizer *)gestureRecognizer {
    NSLog(@"Triple Tap Detected..");
}
Run Code Online (Sandbox Code Playgroud)

现在双击仍然可以缩放MKMapView并且三次攻击成功执行handleTripleTap而不进行缩放.