3

すべての行に座標 (配列に格納) が表示された 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;
    }
}

それはよく知られた問題ですか?解決できますか?ありがとう!

4

1 に答える 1

0

これらすべてのケースで、まったく同じ座標を使用していますか? 現在のビューがターゲット ビューから離れすぎている場合、アニメーションはスキップされます。例: ヨーロッパ全体 -> イタリア = スムーズ ズーム。1st Street、Nobodyville、OH -> Le First Street、PetiteVille、France = インスタント スナップ。

于 2013-01-28T19:52:49.417 に答える