2012-02-14 2 views
8

ho creato su misura delle annotazioni con i seguenti:annotazione immagine è sostituito dal RedPushPin quando premere a lungo su di annotazione

-(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; 
} 

Problema: Quando l'utente preme e tenere premuto per 2 secondi per ogni annotazione Image (Type1 o TYPE2) , Immagine viene sostituita da Red PushPin (predefinito per iPhone MKPinAnnotationView).

Voglio evitare questa sostituzione. Come posso farlo?

risposta

23

Invece di dichiarare e creare un , dichiarare e creare un numero normale MKAnnotationView.

Il numero piace impostare il pin rosso per quello che è per quello.

+0

Volevo anche sapere, se posso mettere RedPushPin su MKAnnotationView o no? – Krishna

+1

Poiché si sta utilizzando la propria immagine per la vista annotazione, è necessario utilizzare MKAnnotationView. Tuttavia, sì, puoi avere alcune annotazioni che sono MKAnnotationView e alcune che sono MKPinAnnotationView (non impostare l'immagine su quelle). Utilizza un ID di riutilizzo separato per ogni classe. – Anna

+0

Grazie Anna .... – Krishna

2

Usa didDeselectAnnotationView e didSelectAnnotationView e riselezionare l'immagine come avete fatto da: -

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