2010-11-19 3 views
2

J'installe ma région MKMapView à l'intérieur du viewWillAppear: de sorte que la carte affiche la bonne région à droite dès que l'utilisateur voit:MKMapView setRegion est pas constante

[mapView setRegion:region animated:NO]; 

Le temps de poing je le fais , je reçois la région coupée comme ceci: je reçois quelque chose comme

alt text

Ensuite, à partir de là, quand je mets la même région exacte, ceci:

alt text

La 2ème capture d'écran est ce que je veux dès le départ. Ma conjecture est la première fois que je définis la région, le mapview n'est pas complètement chargé ou quelque chose le long de ces lignes. Un pointeur de ce que je devrais faire pour résoudre ce problème? Ceci est probablement lié: ajouter une annotation à mapView avant qu'un premier appel à viewDidAppear soit fait ne fonctionne pas non plus. Le pinView n'apparaît pas. Comment puis-je m'assurer que l'affichage de la carte est prêt à être utilisé dans viewWillAppear?

Répondre

1

Je suis tombé en panne this thread qui a suggéré d'ajouter un délai à l'appel setRegion: (si vous avez besoin de l'appeler dans la méthode viewWillAppear de toute façon). Un peu idiot, mais ça marche. Je suis vraiment curieux de savoir ce qui manque à mapView pour effectuer le recentrage correct sans ce délai.

1

Des problèmes ont été rapportés concernant la méthode setRegion il y a quelque temps, je ne sais pas s'ils ont été corrigés depuis. Jetez un oeil au poste suivant sur les forums d'Apple Dev:

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

+0

bon pointeur. Ce bug de comportement étrange de setRegion pourrait être mon problème. Mais toujours pas de solution :( – samvermette

0

Avez-vous essayé de faire l'appel du MKMapViewDelegate mapViewDidFinishLoadingMap message? Peut-être que c'est assez tard pour que la région ait raison?

+1

mettre l'appel dans mapViewDidFinishLoadingMap est équivalent à mettre dans viewDidAppear (dans lequel il fonctionne à chaque fois) .Je veux que la région soit déjà définie lorsque la vue apparaît à l'utilisateur – samvermette

+0

J'ai ajouté mon code setRegion à cette méthode, mais la méthode n'est pas appelée.J'ai pensé qu'il s'appelait automatiquement? – marciokoko