heruntergeladen ich die XCode-Projekt aus dem Link, den Sie erwähnt und war in der Lage, den Fehler zu reproduzieren. Die folgende Antwort hat eine Abhilfe, die für mich gearbeitet
MKMapView Not Calling regionDidChangeAnimated on Pan
Zur Vereinfachung ich die Lösung wiederholt werden soll und wie ich es in dem genannten Projekt
angewandt
In CustomCalloutViewController.h
hinzufügen UIGestureRecognizerDelegate
@interface CustomCalloutViewController : UIViewController
<MKMapViewDelegate, UIGestureRecognizerDelegate>
In CustomCalloutViewController.m
in Methode viewDidLoad
hinzufügen vor [super viewDidLoad];
if (NSFoundationVersionNumber >= 678.58){
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGestureCaptured:)];
pinch.delegate = self;
[mapView addGestureRecognizer:pinch];
[pinch release];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureCaptured:)];
pan.delegate = self;
[mapView addGestureRecognizer:pan];
[pan release];
}
Dann noch CustomCalloutViewController.m
in den folgenden
#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;
}
Bearbeiten hinzufügen: ich gefunden habe, eine andere Abhilfe here (alle am unteren Rand nach unten die obige Abhilfe erwähnt wird, auch). Ich habe es nicht probiert, klingt aber vielversprechend. Ich wiederhole es hier:
Meine Abhilfe ist einfach: In Ihrem View-Controller, erstellen Sie die MKMapView in viewDidAppear :, und zerstören es in viewDidDisappear :. Mir ist klar, dass dies keine freundliche Problemumgehung für diejenigen ist, die den Interface Builder verwenden, aber meiner Meinung nach ist dies der sauberste und wahrscheinlich der beste Weg, Speicher in Ihrer App zu sparen.
Wir haben tatsächlich herausgefunden, dass dies auf dem ursprünglichen Projekt geschieht, das jeder als Vorlage auf dem iOS 5.1-Emulator verwendet, also ist es nicht mein Code. Ich werde versuchen, didSelectView durch Beobachter zu ersetzen und zu sehen, was passiert. –
Ich bekomme dieses Problem auch, es scheint zu auftreten, wenn Sie auf den Stift klicken und halten, während Sie einen neuen Satz von Pins laden. – ThePower