我有一个MKMapView
,双击时会放大(默认行为)。我想向地图视图添加三次轻击手势识别器,以再次缩小到某个初始缩放级别。
问题是内置的双击识别器首先触发。为了延迟这一点,必须以某种方式访问双击识别器,但至少在 iOS6 中,该view
属性gestureRecognizers
不包含地图视图的双击识别器。
那么,是否有可能以某种方式延迟双击识别器以允许三击识别器首先触发?
问问题
3361 次
1 回答
7
查看类中的实例requireGestureRecognizerToFail
方法UIGestureRecognizer
。
在接收器和另一个手势识别器之间创建依赖关系。
例如:
[doubleTap requireGestureRecognizerToFail:tripleTap];
更新
在玩了一会儿之后,我让它像这样工作(假设你有一个MKMapView
named 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);
三重抽头选择器:
- (void)handleTripleTap:(UIGestureRecognizer *)gestureRecognizer {
NSLog(@"Triple Tap Detected..");
}
现在双击仍然可以缩放,MKMapView
并且三次点击成功执行handleTripleTap
而无需缩放。
于 2013-05-15T17:32:24.953 回答