2012-08-03 123 views
0

我有含有的MKMapView的視圖調用,我在它顯示sereval引腳:calloutAccessoryControlTapped不是在故事板

- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    NSLog(@"mapView:viewForAnnotation"); 

    // if it's the user location, just return nil. 
    if ([annotation isKindOfClass:[MKUserLocation class]]){ 
     return nil; 
    } 

    static NSString* AnnotationIdentifier = @"AnnotationIdentifier"; 
    MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier]; 
    pinView.canShowCallout = YES; 
    pinView.pinColor = MKPinAnnotationColorPurple; 
    pinView.annotation = annotation;  

    return pinView; 
} 

這是工作正常,但該方法:

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

不叫當引腳被點擊。看起來點擊事件不會傳輸到引腳,但我無法弄清楚爲什麼。任何想法 ?

回答

5

單擊引腳本身時,地圖視圖將調用代理方法mapView:didSelectAnnotationView:

當點擊註解視圖的leftCalloutAccessoryViewrightCalloutAccessoryView時將調用calloutAccessoryControlTapped方法。這些是出現在引腳標註上的控件(通常是按鈕)。

這聽起來像是您正在尋找mapView:didSelectAnnotationView:委託方法。

+0

謝謝安娜,你說得對。最重要的是,我在註釋中出現了另一個錯誤(標題爲空)。 – Luc 2012-08-03 22:02:45

+0

右鍵 - 但如果左側和右側配件視圖均爲NULL,則整個氣泡都會點擊 – Moose 2016-03-24 17:03:50