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.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage