2016-04-05 4 views
2

Ich habe eine Karte auf meinem View-Controller und ich weiß nicht, warum aber der Delegierte calloutAccessoryControlTappedwird auch aufgerufen, wenn ich nur auf Anmerkungsansicht tippen, nicht nur, wenn ich auf Detailverschluss tippen. Warum also dieses Verhalten?Warum wird calloutAccessoryControlTapped auch für die Annotation-Ansicht aufgerufen?

import UIKit 
import MapKit 

extension MapVC: MKMapViewDelegate, CLLocationManagerDelegate 
{  
    func mapView(mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) 
    { 
     ... 
    } 

} 

Antwort

1

Wie pro Apple-Entwickler-Dokumentation:

Zubehör Ansichten enthalten benutzerdefinierte Inhalte und sind auf beiden Seite des Annotation Titeltext positioniert. Wenn eine von Ihnen angegebene Ansicht ein Abkömmling der UIControl-Klasse ist, ruft die Kartenansicht diese Methode als eine -Funktion auf, wenn der Benutzer auf Ihre Ansicht tippt. Sie können diese Methode verwenden, um auf Antippungen zu reagieren und alle mit dieser -Steuerung verbundenen Aktionen auszuführen. Wenn Ihr Steuerelement beispielsweise zusätzliche Informationen über die Annotation anzeigen würde, könnten Sie diese Methode verwenden, um ein modales -Panel mit dieser Information darzustellen. Wenn Ihre benutzerdefinierten Zubehöransichten keine Nachkommen der UIControl-Klasse sind, ruft die Kartenansicht diese Methode nicht auf.

So ist Ihre Zubehöransicht von UIControl geerbt?

Referenz: https://developer.apple.com/library/ios/documentation/MapKit/Reference/MKMapViewDelegate_Protocol/#//apple_ref/occ/intfm/MKMapViewDelegate/mapView:annotationView:calloutAccessoryControlTapped:

+0

Sorry, aber ich kann nicht den Punkt sehen, die Dokumentation sagt auch: ** Weist den Delegierten, dass der Benutzer eine der ANNOTATION VIEW'S ZUBEHÖR TASTEN angezapft **. Ich erwartete also, dass der Delegat nur für das Tap-Ereignis auf den Schaltflächen aufgerufen wird, nicht für die gesamte Anmerkungsansicht. –

+0

Es heißt: "view you specify ist ein Nachkomme der UIControl-Klasse, die Kartenansicht ruft diese Methode als Annehmlichkeit auf, wenn der Benutzer auf Ihre Ansicht tippt." So ist Ihre Zubehöransicht von UIControl geerbt? – gagarwal

+0

ops du hast Recht, so einfach! : D danke! –