2017-01-08 7 views
0

私は複数のマップピンを持つマップを持っています。各ピンをクリックすると、選択したピンに固有の情報が表示されます。ピンについての位置情報を言うことができます。didSelect実行はdidDeelectアニメーションを終了するために待っていません

は、以下のユースケースを想像:ピンが選択されている場合

1-、選択されたピンに関する情報をビューの表示をアニメーション化。

-2-異なるピンは、ステップ2からアニメーションが終了すると、ステップ1

3-て選択されるビューの隠蔽をアニメーション、選択された場合、特定の情報を含むビューの表示をアニメーションは新しく選択されたピンについて

私はステップ2のためのアクションを実行しようとしたら、didDeselct機能が実行され、次のmapKit機能

func mapView(_ mapView: MKMapView, didDeselect view: MKAnnotationView) { 

     UIView.animate(withDuration: 0.5, animations: { 

      // Animate views 

     }) 

} 

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView){ 
    // did select code 

    UIView.animate(withDuration: 0.5, animations: { 

      // Animate views 

    }) 
} 

を実装しています。その後、didSelect関数のロジックが実行されます。これは動作しますが、問題が1つあります。 didDelectのアニメーションの実行は、didSelect関数が実行される前に終了しません。

didDeselctのアニメーションが完了するまでdidSelectの実行をブロックするにはどうすればよいですか。

私はこの関数のロジックをアニメーションコード内に置くことができないように、まだdidSelect関数が必要です。

答えて

2

関連するviewを表示して非表示にする関数を作成することをお勧めします。この機能は、両方のプロセスを処理するために必要です。アニメーションが進行中かどうかを知るために、変数Boolを作成することもできます。そうであれば、それが完了するのを待って、完了したら再び機能をトリガーします。 get,setの変数ブロックまたはObserver Patternを使用できます。これが助けてくれるといいなあ

+0

ありがとう、これは私が考えていたものですが、フレームワークに組み込まれたこれを行う方法があると思いました。私はこれを試してみる。 –

+0

フレームワークに組み込まれている方法があるかもしれませんが、私はそれほど多くの経験を素早く持っている人ではありません。問題がなければ、これを試してみてください。そうでない場合は、私に知らせてください。 – Faruk

+0

ありがとうございました。 –

関連する問題