如何在没有callout选项的情况下获取MapPin tapped事件?

时间:2011-04-28 13:10:58

标签: iphone

我正在使用MKMapView,我将引脚放在某个地址。我需要这样做:如果我触摸该引脚不应该显示标注和触摸事件应该调用。任何人都可以帮我这样做吗?

1 个答案:

答案 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);
}

确保设置了地图视图的委托属性,否则将不会调用这些方法。