2010-11-24 1 views
3

Wie Sie unten sehen können, habe ich eine Anmerkungsansicht, die eine rechte Schaltfläche hat. Wenn der Benutzer den rechten Knopf drückt, stelle ich ein Popover dar - das Problem ist, dass ich nicht weiß, wo der Benutzer geklopft hat, also habe ich nicht das X und Y, um das Popover entsprechend anzuzeigen.Wie verfolge ich, wo die rechte Callout-Zubehöransicht ist, als sie angetippt wurde?

Wie finde ich heraus, wo der Benutzer geklopft hat, d. H. X und Y?

HotelAnnotationView *customPinView = [[HotelAnnotationView alloc] initWithAnnotation:theHotel reuseIdentifier:hotelPin]; 

//The right button which allows user to see hotel information 
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[rightButton addTarget:self action:@selector(showDetailsForHotel:) forControlEvents:UIControlEventTouchUpInside]; 

rightButton.tag = theHotel.id; 
customPinView.rightCalloutAccessoryView = rightButton; 

Antwort

6

einfach implementieren

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 

, die auf Ihrem Delegierten genannt wird erhalten, jedes Mal ein Benutzer die calloutAccessoryControl tippt. Sie können

zugreifen Sie Anmerkung Eigenschaften durch dann
view.annotation 

Der Grund, warum ich diesen Ansatz mag besser als mit dem (id) sender ist, dass Sie tatsächlich den Zugriff auf nicht nur Ihre Anmerkung lat & lange Koordinaten erhalten, aber alle Daten, die ist tatsächlich damit verbunden, so dass Sie das in Ihrer Pop-Over-Ansicht verwenden können.

1

Ihre Aktion-Methode showDetailsForHotel: beinhaltet das sender Argument, das die Schaltfläche ist, die angezapft wurde. Sie können es für seine Koordinaten wie jede Ansicht fragen.

Verwandte Themen