2013-10-24 11 views
6

Googleのアプリで予期せぬ動作が見られました。マップビューで注釈を表示する1つの画面があり、ユーザーは表示された注釈をボタン。MKMapView - setRegion:animatedにより、iOS7でMKMapViewが応答しなくなる

私たちがiOS7でアプリケーションを再構築すると、スクリーンは定期的にフリーズします。つまり、以下のコードが何回も呼び出されたとき(別々のアノテーションセットで)、ビューが両方に埋め込まれていればMKMapViewでユーザー入力ができなくなります。タブバー、ナビゲーションコントローラ、およびそれらのUI要素はすべて機能していますが、マップビュー自体はユーザー入力(ピンチ/ズーム)を受け付けません。

注釈を表示するコードはここにある:


[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でのみ起こっているのか、以前のバージョンではないのか分かりましたら、わかりました。

+0

私はまったく同じ問題を経験しました。残念ながら私は解決策をまだ見つけていません。 – Jonathan

+0

スレッディングはまったくお勧めですか? – latenitecoder

答えて

-1

がメインスレッドからの関数でsetRegionを実行してみてください:

[self performSelectorOnMainThread:@selector(animateMapRegion) withObject:nil waitUntilDone:NO]; 

-(void)animateMapRegion 
{ 
    CLLocationCoordinate2D mycenter; 
    mycenter.latitude = -38.967659; 
    mycenter.longitude = 172.873534; 
    [self.mapView setRegion:MKCoordinateRegionMake(mycenter, MKCoordinateSpanMake(15, 18)) animated:animated]; 

} 
0

また、あなたのMapView見直し:regionDidChangeAnimated:とのMapView:regionWillChangeAnimated:メソッドを。 1つだけを実装することはあなたのために働くかもしれません。それらのうちの1つが実装するために必要ではないかもしれません。