Ermöglichen Sie das Tippen auf eine Anmerkungsnotiz an einer beliebigen Stelle ohne eine Legenden-Zubehöransicht
Ich habe eine Kartenansicht, die Annotationen mehr oder weniger wie folgt hinzufügt:
- (MKAnnotationView *)mapView:(MKMapView *)mapView
viewForAnnotation:(id <MKAnnotation>) annotation
{
MKAnnotationView *annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation
reuseIdentifier:@"MKPinAnnotationView"];
annotationView.canShowCallout = YES;
UIButton *detailButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[detailButton addTarget:self
action:@selector(handleButtonAction)
forControlEvents:UIControlEventTouchUpInside];
annotationView.rightCalloutAccessoryView = detailButton;
return annotationView;
}
In iOS 7 wird auf der rechten Seite des Callouts ein "i" -Symbol angezeigt. Das Tippen auf das Symbol löst ausmapView:annotationView:calloutAccessoryControlTapped:
(auf dem Delegierten) undhandleButtonAction:
(auf selbst). Vor kurzem habe ich jedoch festgestellt, dass Sie das Callout auch an einer anderen Stelle antippen können und die gleichen beiden Methoden ausgelöst werden.
Dies geschieht mit einer Schaltfläche vom TypUIButtonTypeDetailDisclosure
aber es scheint nicht mit einem zu passierenUIButtonTypeCustom
Taste. Die Delegierungsmethode wird auch nicht ausgelöst, wenn ich auf das Callout tippe, wenn überhaupt keine Zubehöransicht vorhanden ist. (Dieses Verhalten ist natürlich nicht überraschend. Was überrascht, ist, dass diese beiden Methoden verwendet werden, wenn es sich bei der Zubehöransicht um eine Schaltfläche zum Anzeigen von Details handeltsind ausgelöst, unabhängig davon, ob Sie auf die Schaltfläche selbst oder nur an einer anderen Stelle im Callout tippen.)
Ich möchte die Schaltfläche im Callout entfernen oder zumindest durch eine Schaltfläche ersetzen, die mein eigenes Bild anstelle des "i" -Symbols anzeigt, während der Benutzer weiterhin auf eine beliebige Stelle des Callouts tippen kann, um meine Aktion auszulösen . Ist das möglich? Ich sehe keinMKMapViewDelegate
Methode, die "Callout getappt" entspricht.