2012-02-14 10 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) के लिए पकड़ , छवि को लाल पुशपिन द्वारा प्रतिस्थापित किया जाता है (आईफोन MKPinAnotationView के लिए डिफ़ॉल्ट)।

मैं इस प्रतिस्थापन से बचना चाहता हूं। ऐसा मैं किस प्रकार करूं?

उत्तर

23

MKPinAnnotationView घोषित करने और बनाने के बजाय, एक सादा MKAnnotationView घोषित करें और बनाएं।

MKPinAnnotationView लाल पिन के लिए डिफ़ॉल्ट रूप से पसंद करता है जो इसके लिए है।

+0

मुझे यह भी पता करने के लिए, मैं MKAnnotationView पर RedPushPin रख सकते हैं या नहीं कर सकते हैं चाहते थे? – Krishna

+1

चूंकि आप एनोटेशन व्यू के लिए अपनी खुद की छवि का उपयोग कर रहे हैं, तो आपको MKAnotationView का उपयोग करना चाहिए। हालांकि, हां, आपके पास कुछ एनोटेशन हो सकते हैं जो MKAnotationView हैं और कुछ जो MKPinAnotationView हैं (उन पर छवि सेट न करें)। प्रत्येक वर्ग के लिए एक अलग पुन: उपयोग आईडी का प्रयोग करें। – Anna

+0

धन्यवाद अन्ना .... – Krishna

2

उपयोग didDeselectAnnotationView और didSelectAnnotationView और छवि फिर से चुनें के रूप में आप द्वारा किया: -

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