我在每一行都显示了带有坐标(存储在数组中)的 UITableView,当我点击表格行时,我想在这些坐标上居中(缩放和动画)我的 MKMapView。这是简单的经典 didSelectRowAtIndexPath 方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
latitude = [dataSourceLatitude objectAtIndex:indexPath.row];
longitude = [dataSourceLongitude objectAtIndex:indexPath.row];
MKCoordinateRegion region;
region.center.latitude = latitudine.floatValue;
region.center.longitude = longitude.floatValue;
region.span.latitudeDelta = 0.20;
region.span.longitudeDelta = 0.20;
[map setRegion:region animated:TRUE];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
好吧,它适用于所有模拟器和设备,但不适用于 iOS6 的 iPad REAL DEVICE:只有在第一次点击表格行时,我才能看到地图缩放和坐标中心;在另一行上点击后,我看到地图直接以坐标为中心,没有缩放和动画。所以情况是这样的:
iPhone 5.1 simulator = it works!
iPad 5.1 simulator = it works
iPhone 5.1 REAL DEVICE = it works!
iPhone 6 simulator = it works!
iPad 6 simulator = it works
iPad 6 REAL DEVICE = it DOESN'T WORK!
编辑: pinView animatesDrop 也有问题:在带有 iOS6 的 iPad REAL DEVICE 上,我看不到下降动画,但大头针直接在地图上捕捉。我使用了来自@Anna Karenina 的优雅代码,它仅在 iOS6 上不起作用:
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)annotationViews
{
NSTimeInterval delayInterval = 0;
for (MKAnnotationView *annView in annotationViews)
{
CGRect endFrame = annView.frame;
annView.frame = CGRectOffset(endFrame, 0, -500);
[UIView animateWithDuration:1.500
delay:delayInterval
options:UIViewAnimationOptionAllowUserInteraction
animations:^{ annView.frame = endFrame; }
completion:NULL];
delayInterval += 0.1500;
}
}
这是一个众所周知的问题吗?我可以解决吗?谢谢!