Это делегированный метод представления карты, поэтому ваш код не вызывает его напрямую.В представлении карты этот метод вызывается при нажатии на вид аннотации rightCalloutAccessoryView или leftCalloutAccessoryView.
При создании вида карты установите его свойство делегата и в методе viewForAnnotation создайте кнопку и установите ее как rightCalloutAccessoryView или leftCalloutAccessoryView.
Например:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
static NSString *annotationIdentifier = @"annot";
MKPinAnnotationView *pav = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];
if (!pav)
{
pav = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier] autorelease];
pav.canShowCallout = YES;
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
pav.rightCalloutAccessoryView = rightButton;
}
else {
pav.annotation = annotation;
}
return pav;
}
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
//handle tap on annotation...
}