アプリの 1 つで予期しない動作が見られました。1 つの画面でマップ ビューに注釈が表示され、ユーザーはボタンをクリックして表示上の注釈を変更できます。
iOS7 でアプリを再構築すると、画面が定期的にフリーズします。つまり、以下のコードが (異なる注釈のセットで) 数回呼び出されると、MKMapView でユーザー入力ができなくなります。ビューはタブ バーとタブ バーの両方に埋め込まれます。ナビゲーション コントローラーとそのすべての UI 要素はまだ機能していましたが、mapview 自体はユーザー入力 (ピンチ/ズーム) を受け入れませんでした。
注釈を表示するコードは次のとおりです。
[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];
私が見つけたのは、アニメーション化
せずに領域を設定すること、つまり上記のコードを次のように変更することです
[self.mapView setRegion:MKCoordinateRegionMake(mycenter, MKCoordinateSpanMake(15, 18))
animated:NO];
この問題は解消され、MKMapView は iOS7 でも適切に動作します。
なぜこれが起こっているのか、なぜiOS7でのみ発生し、以前のバージョンでは発生していないのかについての考えがある場合は、明確にしていただければ幸いです.