すべての行に座標 (配列に格納) が表示された 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;
}
}
それはよく知られた問題ですか?解決できますか?ありがとう!