Iphone MKMapView setRegion:动画:在模拟器上工作,但不在设备iOS6上工作

Iphone MKMapView setRegion:动画:在模拟器上工作,但不在设备iOS6上工作,iphone,ios,ios6,mkmapview,Iphone,Ios,Ios6,Mkmapview,我有一个MKMapView。要更改显示的区域,请使用 [self.mapView setRegion:region animated:YES]; 奇怪的是,在模拟器上,区域会随着动画而改变,但在设备上,这种改变是即时的,而不是动画 我在地图上长时间点击后改变了区域 这种行为让我发疯,我无法解决它。。。 谢谢…您需要使用以下代码减慢setRegion的速度 [self performSelector:@selector(setMapRegion) withObject:nil afterDela

我有一个
MKMapView
。要更改显示的区域,请使用

[self.mapView setRegion:region animated:YES];
奇怪的是,在模拟器上,区域会随着动画而改变,但在设备上,这种改变是即时的,而不是动画

我在地图上长时间点击后改变了区域

这种行为让我发疯,我无法解决它。。。
谢谢…

您需要使用以下代码减慢setRegion的速度

[self performSelector:@selector(setMapRegion) withObject:nil afterDelay:3.0];


-(void) setMapRegion
{
[self.mapView setRegion:region animated:YES];
}

如果在设备和iOS 6+上加载地图,则在加载分幅之前会有一点延迟,因此最好尝试延迟区域更改


即使您设置了动画,贴图也没有响应。如果您看不清楚,它看起来好像没有制作任何动画。

MKMapView
在贴图加载所有必要的分幅并准备好使用后,调用其委托方法
mapViewDidFinishLoadingMap:
。你应该在那里调用
setRegion:animated:

你在ios 7上测试过吗?你在设备上设置Region时是否尝试过延迟?我认为地图加载速度不够快。@soryngod你能解释得更好吗?因为我不明白你的意思…我知道地图没有实时加载所有的分幅,你可能访问[self.mapView setRegion:region animated:YES]太快了,所以你可以这样尝试:创建另一个包含这行代码的选择器,你可以在延迟后执行[self-performSelector:@selector(yourSelector):1.5f];看看晚一点设置区域是否能解决您的问题。当地图识别出长点击时,我想更改区域。。。因此,如果我延迟更改区域,则点击是“长-长点击”。我认为这不会影响。