2010-11-19 6 views
2

ich meine MKMapView Bereich innerhalb der viewWillAppear bin Einstellung: so dass die Karte den guten Bereich zeigt rechts, sobald der Benutzer sie sieht:MKMapView setRegion ist nicht konstant

[mapView setRegion:region animated:NO]; 

Die Faust Mal, dass ich es tun ich die Region wie so getrimmt erhalten:

alt text

Dann von dort, wenn ich genau den gleichen Region, habe ich so etwas wie diese:

alt text

Der zweite Screenshot ist das, was ich von Anfang an erhalten möchten. Meine Vermutung ist das erste Mal, dass ich die Region einstelle, die Kartenansicht ist nicht vollständig geladen oder etwas in dieser Richtung. Irgendwelche Hinweise darauf, was ich tun sollte, um das zu beheben?

EDIT: Dies ist wahrscheinlich verwandt: Hinzufügen einer Anmerkung zur mapView, bevor ein erster Aufruf von viewDidAppear gemacht wird, funktioniert auch nicht. Das PinView wird einfach nicht angezeigt. Wie kann ich sicherstellen, dass die Kartenansicht für die Verwendung in viewWillAppear bereit ist?

Antwort

1

Ich stolperte this thread, die vorgeschlagen, eine Verzögerung zum setRegion: Aufruf hinzuzufügen (wenn Sie es in der viewWillAppear-Methode trotzdem aufrufen müssen). Ein bisschen albern, aber es funktioniert.

- (void)viewWillAppear:(BOOL)animated { 
    [self performSelector:@selector(centerMap:) withObject:nil afterDelay:0.01]; 
} 

Ich bin wirklich gespannt, was die mapView fehlt die richtige Rückzentrier ohne diese Verzögerung zu tun.

1

Probleme wurden in Bezug auf die Methode setRegion vor einiger Zeit gemeldet, ich weiß nicht, ob sie seither behoben wurden. Werfen Sie einen Blick auf die folgenden Beitrag auf dem Apple Dev Foren:

https://devforums.apple.com/message/57488

+0

guter Zeiger. Dieser seltsame Verhaltensstörung setRegion könnte mein Problem sein. Aber immer noch keine Lösung gefunden :( – samvermette

0

Haben Sie versucht, machen den Anruf aus der MKMapViewDelegate mapViewDidFinishLoadingMap Nachricht? Vielleicht ist das spät genug, um die Region richtig zu machen?

+1

den Aufruf in mapViewDidFinishLoadingMap setzen entspricht dem in viewDidAppear (in dem es jedes Mal funktioniert). Ich möchte die Region bereits festgelegt, wenn die Ansicht für den Benutzer erscheint. – samvermette

+0

Ich habe hinzugefügt mein setRegion-Code zu dieser Methode, aber die Methode wird nicht aufgerufen. Ich dachte, es wurde automatisch aufgerufen? – marciokoko