2012-03-26 12 views
4

私のiPhoneアプリには、ユーザーが選択できる場所が多数あるマップビューがあります。注釈の1つをタップしてコールアウトビューを表示し、実際にそれを選択することができるようにしたいと思います。問題は、didSelectAnnotationViewが一度だけ呼び出されることです。MapViewアノテーションを2回選択する

どうすれば、すでに選択されている注釈の選択を検出できますか?または、コールアウトビューを非表示にすることなく注釈の選択を解除するにはどうすればよいですか?ユーザーは、再度選択する前に注釈の選択を解除することでこれを処理することができますが、これは直感的ではないため、これを行う必要はありません。

+0

あなたがあなた自身のコード内でそのビューの第2のプレスを検出することはできませんMKAnnotationViewのサブクラスを使用している場合は? (ピンではなく) – Diziet

+0

私は現在MKAnnotationViewをサブクラス化していません。しかし、私はこれに単純な解決策がないように思われることに驚いています。 –

+0

私はちょうど周りのフィドルを持っていたし、あなたが今より明確になっているものを参照してください。私は注釈をクリックしてもそれは消えるので、関係するピンを再選択せずに2回目のクリックをする機会はありません。 – Diziet

答えて

0

アノテーションを選択状態から選択状態に再び移動することはできません。

代わりに、カスタムmkannotationviewを使用して、setSelectedをオーバーライドし、ビューにUITapGestureRdcognizerをインストールし、ビューが選択解除されているときに削除することができます。

タップ時に選択した状態にしたいと思っていると認識しています。

7

は、私は以下のコードと解決策が見つかりました:

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 
{ 
    [mapview deselectAnnotation:view.annotation animated:NO]; 

} 

選択した注釈が選択解除されます。この道を、あなたは再びそれを選択することができます。 '16でこの問題を抱えている人のために

3

は、ここスウィフトバージョンです:

mapView.deselectAnnotation(view.annotation!, animated: false) 
関連する問題