Wir haben ein unerwartetes Verhalten in einer unserer Apps gesehen - auf einem Bildschirm zeigen wir Annotationen in einer Kartenansicht an und der Benutzer kann die angezeigten Annotationen durch Klicken auf a ändern Taste.MKMapView - setRegion: animiert macht MKMapView nicht mehr auf iOS7
Wenn wir die App mit iOS7 neu aufbauen, würde der Bildschirm regelmäßig einfrieren, dh nach mehrmaligem Aufruf des unten stehenden Codes (mit unterschiedlichen Annotationen) war keine weitere Benutzereingabe mehr möglich - die Ansicht ist in beiden eingebettet eine Tab-Leiste und ein Nav-Controller und alle ihre UI-Elemente funktionierten immer noch, aber die Mapview selbst würde keine Benutzereingaben akzeptieren (Kneifen/Zoomen).
Der Code, der die Anmerkungen zeigt hier:
[self.mapView removeAnnotations:self.mapView.annotations];
for (MyObject *my in self.mydata)
{
MyAnnotation *annotation = [MyAnnotationFactory createAnnotationFor:my];
[self.mapView addAnnotation:annotation];
}
CLLocationCoordinate2D mycenter;
mycenter.latitude = -38.967659;
mycenter.longitude = 172.873534;
[self.mapView setRegion:MKCoordinateRegionMake(mycenter, MKCoordinateSpanMake(15, 18))
animated:YES];
[self.mapView setCenterCoordinate:mycenter];
Was ich fand, ist, dass es durch Einstellen der Region ohne Animieren, dh durch den obigen Code zu Ändern
[self.mapView setRegion:MKCoordinateRegionMake(mycenter, MKCoordinateSpanMake(15, 18))
animated:NO];
die Problem verschwindet und MKMapView verhält sich auch auf iOS7 gut.
Wenn Sie eine Idee zu haben, warum dies passiert, und warum es nur in iOS7 und nicht für frühere Versionen passiert, würde ich die Klarstellung zu schätzen wissen.
Ich habe das exakt gleiche Problem erlebt. Leider habe ich noch keine Lösung gefunden. – Jonathan
Verklagst du überhaupt Threading? – latenitecoder