我正在使用MKMapView,我将引脚放在某个地址。我需要这样做:如果我触摸该引脚不应该显示标注和触摸事件应该调用。任何人都可以帮我这样做吗?
答案 0 :(得分:3)
在mapView:viewForAnnotation:
委托方法中,将canShowCallout
属性设置为NO并使用mapView:didSelectAnnotationView:
检测触摸:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
static NSString *annotIdentifier = @"annot";
MKPinAnnotationView *pav = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annotIdentifier];
if (!pav)
{
pav = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotIdentifier] autorelease];
pav.canShowCallout = NO;
}
else
{
pav.annotation = annotation;
}
return pav;
}
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
NSLog(@"annotation touched: %@", view.annotation.title);
}
确保设置了地图视图的委托属性,否则将不会调用这些方法。