MKMapView
当用户在地图上单击时,我想在我的上面放置一个图钉。我可以使用密码,单击可以使用,但是当我双击缩放时,我会先单击一下。这是我设置识别器的代码:
self.doubleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleDoubleTap:)];
self.doubleTap.numberOfTapsRequired = 2;
self.doubleTap.numberOfTouchesRequired = 1;
[mapView_ addGestureRecognizer:doubleTap_];
self.singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleGesture:)];
self.singleTap.numberOfTapsRequired = 1;
self.singleTap.numberOfTouchesRequired = 1;
[self.singleTap requireGestureRecognizerToFail: doubleTap_];
[mapView_ addGestureRecognizer:singleTap_];
现在,引用 Apple 的话,这并不奇怪:
注意:在单击与双击手势的情况下,如果单击手势识别器不需要双击识别器失败,您应该期望在双击之前收到单击操作操作,即使在双击的情况下。这是预期和理想的行为,因为最佳用户体验通常涉及可堆叠的操作。
所以我添加requireGestureRecognizerToFail
到我的单击识别器中。
[singleTap requireGestureRecognizerToFail: doubleTap];
这确保了我的单击识别器不会被双击。
但...
现在我的双击识别器得到了双击并且MKMapView
没有得到它们。我尝试在识别器中设置cancelsTouchesInView
,NO
但这也无济于事。
所以我需要一种方法来防止我的单击识别器获得双击(这似乎不太可能)或将我的双击事件发送到我的 mapView。