3

マップビューにいくつかの注釈があります。それらの1つを選択した後(コールアウトが有効)、マップをその中心に配置します。[mapView setCenterCoordinate:coordinate animated:YES];私はdidSelectAnnotationViewそれを達成するために呼びかけます。

これは機能しますが、常にではありません。基本的に、コールアウトを表示するための十分なスペースが残っていない場合、マップは移動し、注釈が選択されますが、コールアウトは表示されません(移動がアニメーション化されているかどうかは関係ありません)。自分でマップを移動しない場合setCenterCoordinate、注釈を選択すると、マップが自動的に(わずかに)移動してコールアウトが表示され、毎回機能します。

私の場合、それを機能させる方法はありますか?要約すると、選択した注釈の中央にマップを配置し、コールアウトを表示します。

4

1 に答える 1

4

setCenter少し遅れて呼び出すことで解決しましたdidSelectAnnotationView

dispatch_time_t dt = dispatch_time(DISPATCH_TIME_NOW, 0.2 * NSEC_PER_SEC);
dispatch_after(dt, dispatch_get_main_queue(), ^(void)
{
    [mapView setCenterCoordinate:view.annotation.coordinate animated:YES];
});
于 2012-05-26T15:35:51.317 に答える