0

我有一个包含 MKMapView 的视图,我在其中显示了几个引脚:

- (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

单击 pin 时不调用。似乎点击事件没有传输到引脚,但我不知道为什么。任何的想法 ?

4

1 回答 1

6

当图钉本身被点击时,地图视图将调用委托方法mapView:didSelectAnnotationView:

当一个注释视图的或被点击calloutAccessoryControlTapped时调用该方法。这些是出现在图钉标注上的控件(通常是按钮)。leftCalloutAccessoryViewrightCalloutAccessoryView

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

于 2012-08-03T21:26:14.693 回答