2016-04-29 15 views
1

Ich habe einen Kartenansicht-Controller erstellen und alles funktioniert gut. Wenn Sie eine Anmerkungsansicht auf der Karte auswählen, wird eine benutzerdefinierte Ansicht auf dem Bildschirm angezeigt, um einige Informationen zu dieser Anmerkung anzuzeigen. Wenn Sie auf die Karte tippen, wird die Anmerkungsansicht abgewählt und die benutzerdefinierte Ansicht ausgeblendet.didDeselectAnnotationView nicht aufgerufen, wenn auf Kartenansicht tippen

Ich bekomme eine Anforderung jetzt, dass, wenn es nur eine Anmerkung auf der Ansicht ist, die benutzerdefinierte Ansicht zeigen, wenn die Kartenansicht Controller gedrückt wird. So einfach ich

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view

wenn Kartenansicht implementieren fertig geladen.

- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView { 
    if (self.viewModel.pointsArray.count == 1) { 
     GSMapsLocationPoint* point = self.viewModel.pointsArray.lastObject; 
     MKAnnotationView *annotationView = [self.mapsView viewForAnnotation:point]; 
     [self mapView:self.mapsView didSelectAnnotationView:annotationView]; 
    } 
} 

Allerdings, wenn ich auf der Karte tippen, - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view wird nicht aufgerufen. Wenn ich manuell auf diese Anmerkungsansicht tippe, wird didSelectAnnotationView korrekt aufgerufen.

Es sieht so aus, als ob dieser Aufruf didSelectAnnotationView im Code keinen Status ändert, so dass die Kartenansicht nicht weiß, dass eine Anmerkungsansicht ausgewählt ist.

Wie kann ich das beheben? Danke im Voraus.

Antwort

1

sollten Sie selectAnnotation: anstelle von didSelectAnnotationView:, versuchen diese zu ersetzen:

[self mapView:self.mapsView didSelectAnnotationView:annotationView]; 

mit diesem:

[self.mapsView selectAnnotation:point animated:YES]; 

didSelectAnnotationView: wird von Ihrem mapView aufgerufen werden, wenn die Anmerkung ausgewählt ist.

+0

Es funktioniert. Danke vielmals! – highsun16