我们已经在我们的一个应用程序中看到了一种意外行为——我们在一个屏幕上显示地图视图上的注释,用户可以通过单击按钮来更改显示的注释。
当我们用 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 而不是早期版本,我将不胜感激。