2012-02-14 38 views
8

我已创建自定义注解长按与以下:注释图像被RedPushPin更换时上注释

-(MKAnnotationView*)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation 
{ 
    MKPinAnnotationView *view = nil; 
    if (annotation != mapView.userLocation) 
    { 
     view = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"myAnnotationIdentifier"]; 
     if (!view) 
      view = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"myAnnotationIdentifier"]; 

     if (((CustomAnnotation *)annotation).annotationType == 1) 
     { 
      view.image = [UIImage imageNamed:@"type1.png"]; 
      view.rightCalloutAccessoryView = nil; 
      view.canShowCallout = YES; 
     } 
     else 
     { 
      view.image = [UIImage imageNamed:@"type2.png"]; 
      view.rightCalloutAccessoryView = nil; 
      view.canShowCallout = YES; 
     } 
    } 
return view; 
} 

问题:当用户按下并保持在任何注释图像2秒(TYPE1或2型) ,图像被红色PushPin(默认为iPhone MKPinAnnotationView)取代。

我想避免这种替换。我该怎么做?

回答

23

而不是宣告和创建MKPinAnnotationView,声明并创建一个纯MKAnnotationView

MKPinAnnotationView喜欢默认使用它的红色针脚。

+0

我也想知道,我是否可以把RedPushPin上MKAnnotationView与否? – Krishna 2012-02-14 12:18:37

+1

由于您正在使用自己的图像作为注释视图,因此应该使用MKAnnotationView。但是,是的,你可以有一些注解是MKAnnotationView,有些是MKPinAnnotationView(不要在这些图像上设置图像)。为每个类使用单独的重用ID。 – Anna 2012-02-14 12:31:00

+0

谢谢安娜.... – Krishna 2012-02-14 15:50:16

2

使用didDeselectAnnotationViewdidSelectAnnotationView并重新选择图像像你一样的: -

view.image = [UIImage imageNamed:@"type2.png"];