如何在第二次点击时取消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”再次被调用。