Cómo anular la selección de una anotación de map en un segundo toque

Mi tarea es anular la selección de una anotación de map en el segundo toque.

No encontré cómo hacerlo con las funciones mapView. Entonces usé un artículo de stackoverflow y hago así:

- (void)viewDidLoad { annotationTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(annotationTapRecognized:)]; annotationTap.numberOfTapsRequinetworking = 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]; } } 

Parece que funciona correctamente, pero no lo es. Cuando presiono la anotación, la segunda vez que aparece la llamada desaparece y aparece de nuevo.

¿Algunas ideas?

Gracias por adelantado.

Encontré la solución Quizás no sea bueno

He añadido boolean "is show", como se menciona más tarde. Entonces, mis funciones se parecen a las siguientes:

 - (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; } 

Quizás sea útil para alguien :).

Gracias.

Tal vez debería agregar un boolean "es visible" y actuar en consecuencia. Porque parece que se llama a su gesto y luego se vuelve a llamar "did Select".