如何识别哪个引脚被窃听

我在这张地图上有一个MKMapView和大量的针脚的应用程序。

每个引脚都得到了rightCalloutAccessoryView 。 我以这种方式创build它:

 UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside]; pinView.rightCalloutAccessoryView = rightButton; 

我应该怎么知道,哪个针被窃听? 日Thnx

showDetails:方法中,您可以从地图视图的selectedAnnotations数组中获取引脚。 即使该属性是NSArray ,只需获取数组中的第一个项目,因为地图视图只允许一次select一个引脚:

 //To be safe, may want to check that array has at least one item first. id<MKAnnotation> ann = [[mapView selectedAnnotations] objectAtIndex:0]; // OR if you have custom annotation class with other properties... // (in this case may also want to check class of object first) YourAnnotationClass *ann = [[mapView selectedAnnotations] objectAtIndex:0]; NSLog(@"ann.title = %@", ann.title); 

顺便说一句,而不是做addTarget和实现一个自定义的方法,你可以使用地图视图的calloutAccessoryControlTapped委托方法。 点击的注释在view参数中可用:

 -(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { NSLog(@"ann.title = %@", view.annotation.title); } 

如果使用calloutAccessoryControlTapped请确保从viewForAnnotation删除calloutAccessoryControlTapped