calloutAccessoryControlTapped不是在故事板

问题描述:

我有含有的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 

不叫当引脚被点击。看起来点击事件不会传输到引脚,但我无法弄清楚为什么。任何想法 ?

单击引脚本身时,地图视图将调用代理方法mapView:didSelectAnnotationView:

当点击注解视图的leftCalloutAccessoryViewrightCalloutAccessoryView时将调用calloutAccessoryControlTapped方法。这些是出现在引脚标注上的控件(通常是按钮)。

这听起来像是您正在寻找mapView:didSelectAnnotationView:委托方法。

+0

谢谢安娜,你说得对。最重要的是,我在注释中出现了另一个错误(标题为空)。 – Luc 2012-08-03 22:02:45

+0

右键 - 但如果左侧和右侧配件视图均为NULL,则整个气泡都会点击 – Moose 2016-03-24 17:03:50