6

アプリの 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でのみ発生し、以前のバージョンでは発生していないのかについての考えがある場合は、明確にしていただければ幸いです.

4

2 に答える 2