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

ピンをクリックしても呼び出されません。クリック イベントがピンに送信されていないようですが、その理由がわかりません。何か案が ?

4

1 に答える 1

6

ピン自体がクリックされると、マップ ビューはデリゲート メソッドを呼び出しますmapView:didSelectAnnotationView:

このcalloutAccessoryControlTappedメソッドは、注釈ビューのleftCalloutAccessoryViewまたはrightCalloutAccessoryViewがタップされたときに呼び出されます。これらは、ピンのコールアウトに表示されるコントロール (通常はボタン) です。

mapView:didSelectAnnotationView:代わりにデリゲート メソッドを探しているようです。

于 2012-08-03T21:26:14.693 に答える