2014-10-29 56 views
6

Yerleşik harita görünümü kullanan bir IOS uygulaması yapıyorum. Özel notları vb. Başarıyla yerleştiriyorum. Ancak, bir ek açıklama basıldığında çağrılan temsilci işleviyle ilgili bir sorun yaşıyorum (mapView: didSelectAnnotationView).mapView: didSelectAnnotationView: düzgün çalışmıyor.

İlk kez bir ek açıklamaya bastığımda, işlev düzgün çağrılır. Bununla birlikte, aynı açıklamayı tekrar tıklamaya devam edersem, işlev tetiklenmez. Bu noktada farklı bir açıklama üzerine tıklarsam, işlev patlayacaktır, ancak daha sonra bu açıklamayı tıklatırsam işlev çalışmaz. Temel olarak, üst üste iki kez aynı açıklamayı tıklayamam. Temsilci işlevi yalnızca ilk kez çağrılacaktır. Kimse bu problemle karşılaştı mı? Özellikle bir yerde böcek aramalı mıyım?

+0

Aynı sorunu yaşıyorum, ancak bir fark var, yani. Özel açıklama notu, harita görünümünün sınırında olduğunda sorun yaşıyorum. –

cevap

4

Bunu düşündüğünüzde, bu açıklama görünümünü zaten seçtiniz. Temsilcinin, zaten varsa, pimin seçildiğini size söylemesi mantıklı değildir.

Basit bir düzeltme, temsilci çağrısında seçimin kaldırılması için ek açıklama ayarlamak olabilir. Bu, tekrar aramanıza izin vermelidir.

[annotation setSelected:NO animated:NO]; 

Aramanız gereken yöntem için burada bulunan seçenekler. https://developer.apple.com/library/ios/documentation/mapkit/reference/MKAnnotationView_Class/index.html#//apple_ref/occ/instm/MKAnnotationView/setSelected:animated:

+0

benim için çalışmadı –

+0

Sizin için uygun olmayan nedir? Objective-C'yi hala kullanıyor musunuz? Bu cevap çok eskidir, bu yüzden araya giren zamanda eskimiş olabilirdi. – Bergasms

5

Arkadaş tavsiyeyi düşündü ve doğru olduğu ortaya çıktı. SysectAnnotationView ne zaman çıktı, aslında bir şekilde seçili olarak ek açıklamaları etiketler. Daha sonra tekrar tıkladığınızda, temsilci işlevi 'zaten seçildiğinden' tetiklenmez. İstediğiniz şeyi yaptıktan sonra, şu işlevi çağırıp ek açıklamayı manuel olarak kaldırmanız gerekir.

[mapView deselectAnnotation:view.annotation animated:false]; 
1
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)aView 
    { 
     indexPathTag=aView.tag; 
     [mapView deselectAnnotation:aView.annotation animated:YES]; 

    } 
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)aView 
    { 
    } 

Bunun sizin için çalışacaktır umut :) Ben aynı sorun karşılaştı, bu kod benim için çalıştı.