如何在第二次点击时取消select地图注记

我的任务是在第二次点击时取消select地图注释。

我没有find如何使用mapViewfunction。 所以我用了一个来自于stackoverflow的文章,并且这样做:

- (void)viewDidLoad { annotationTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(annotationTapRecognized:)]; annotationTap.numberOfTapsRequired = 1; annotationTap.delegate = self; } - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view { [view addGestureRecognizer:annotationTap]; } - (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view { [view removeGestureRecognizer:annotationTap]; } - (void)annotationTapRecognized:(UIGestureRecognizer *)gesture { NSArray *selectedAnnotations = self.viewMap.selectedAnnotations; for (MapAnnotation *annotationView in selectedAnnotations) { [self.viewMap deselectAnnotation:annotationView animated:NO]; } } 

这似乎是正确的,但事实并非如此。 当我点击注解第二次标注消失并再次出现。

有任何想法吗?

提前致谢。

我find了解决scheme。 也许这不好。

我已经添加了布尔型“is show”,就像luxsypher提到的那样。 所以我的function如下所示:

 - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view { [view addGestureRecognizer:annotationTap]; if (isShow) { NSArray *selectedAnnotations = self.viewMap.selectedAnnotations; for (MapAnnotation *annotationView in selectedAnnotations) { [self.viewMap deselectAnnotation:annotationView animated:YES]; } isShow = FALSE; } } - (void)annotationTapRecognized:(UIGestureRecognizer *)gesture { NSArray *selectedAnnotations = self.viewMap.selectedAnnotations; for (MapAnnotation *annotationView in selectedAnnotations) { [self.viewMap deselectAnnotation:annotationView animated:YES]; } isShow = TRUE; } 

也许这对于某个人来说是有用的:)。

谢谢。

也许你应该添加一个布尔值“可见”,并采取行动。 因为它看起来像你的手势被称为,然后“做select”再次被调用。