2012-02-14 2 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 или type2) , Изображение заменяется на Red PushPin (по умолчанию для iPhone MKPinAnnotationView).

Я хочу избежать этой замены. Как я могу это сделать?

ответ

23

Вместо объявления и создания MKPinAnnotationView, объявите и создайте равное MKAnnotationView.

MKPinAnnotationView любит по умолчанию красный контакт, для чего он нужен.

+0

Я также хотел бы знать, Могу ли я ставить RedPushPin на MKAnnotationView или нет? – Krishna

+1

Поскольку вы используете свой собственный образ для аннотации, вы должны использовать MKAnnotationView. Однако да, у вас могут быть некоторые аннотации, которые являются MKAnnotationView, а некоторые - MKPinAnnotationView (не устанавливайте изображение на них). Используйте отдельный идентификатор повторного использования для каждого класса. – Anna

+0

Спасибо, Анна .... – Krishna

2

Использование didDeselectAnnotationView и didSelectAnnotationView и повторно изображение, как вы делали с помощью: -

view.image = [UIImage imageNamed:@"type2.png"]; 
Смежные вопросы