2012-06-09 16 views
6

dokunarak sonra durur aslında Annotation gibi başka özel AnnotationView yerleştirir (Jacob bir), seçilirse:MKMapKit regionDidChangeAnimated kodu burada izah ile Özel bir MKAnnotationView ek bilgiyi uygulamaya ediyorum özel ek bilgiyi

MKAnnotationView - Lock custom annotation view to pin on location updates

Herşey gayet iyi çalışıyor ama bazı garip davranışlarım var. Özel belirtme çizgisine dokunduktan sonra, belirtme çizgisini reddeder ancak regionDidChangeAnimated temsilci yöntemi daha sonra çağrılmayı durdurur.

Bir şey mi özlüyorum? Haritayı her zamanki gibi kapatabilirim, ancak o temsilci yöntemini çağırmayacak. Her ne kadar yakınlaştırma veya uzaklaştırma yapılıyorsa çağrılır.

AnnotationView'ın yerleştirilmesi için özel bir CallOut eklemeden önce, bu hiç olmamıştı.

Önceden Thx.

Selamlar, Alan //

+0

Aslında herkesin iOS 5.1 öykünücüsünde şablon olarak kullandığı orijinal projede gerçekleştiğini öğrendik, bu yüzden kodum değil. DidSelectView'ı gözlemcilerle değiştirmeyi deneyeceğim ve ne olduğunu görün. –

+0

Bu sorunu da alıyorum, pimi tıklarken ve yeni bir grup pimi yüklerken tuttuğunuzda ortaya çıkıyor. – ThePower

cevap

2

Bahsettiğin bağlantıdan XCode projesini indirilen ve hatayı yeniden başardı. Aşağıdaki cevabı ben çözümü tekrarlamak istiyorum

kolaylık sağlamak için

MKMapView Not Calling regionDidChangeAnimated on Pan

benim için çalışan bir geçici çözüm vardır ve bahsettiğim projede uyguladı nasıl CustomCalloutViewController.h yılında

UIGestureRecognizerDelegate

@interface CustomCalloutViewController : UIViewController 
<MKMapViewDelegate, UIGestureRecognizerDelegate> 
eklemek

viewDidLoad yöntemindeki CustomCalloutViewController.m numaralı telefonla ilgili daha önce ekleyin [super viewDidLoad];

Sonra yine CustomCalloutViewController.m aşağıdaki

#pragma mark - 
#pragma mark Gesture Recognizers 

- (void)pinchGestureCaptured:(UIPinchGestureRecognizer*)gesture{ 
    if(UIGestureRecognizerStateEnded == gesture.state){ 
     ///////////////////[self doWhatYouWouldDoInRegionDidChangeAnimated]; 
    } 
} 

- (void)panGestureCaptured:(UIPanGestureRecognizer*)gesture{ 
    if(UIGestureRecognizerStateEnded == gesture.state){ 


     NSLog(@"panGestureCaptured ended"); 
     // *************** Here it is ********************* 
     ///////////////////[self doWhatYouWouldDoInRegionDidChangeAnimated]; 
     // *************** Here it is ********************* 
    } 
} 

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ 
    return YES; 
} 

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch: (UITouch *)touch{ 
    return YES; 
} 

Edit ekleyin: I (çok yukarıda geçici çözüm belirtilen altta tüm aşağı) başka bir çözüm here bulduk. Denemedim, ama söz veriyor. Burada tekrarlamak:

Benim geçici çözüm basittir: görünüm denetleyicisinde, viewDidAppear MKMapView oluşturmak :, ve viewDidDisappear içinde onu yok :. Bunun, Arayüz Oluşturucu kullanan kişiler için kolay bir çözüm olmadığını biliyorum, ancak benim görüşüme göre, uygulamanızdaki hafızayı korumanın en temiz ve muhtemelen en iyi yolu.

İlgili konular