カスタム注釈を含む iOS アプリがあります。
- MKAnnotationView を 1 回タップしてコールアウトを表示できるようにしたい (正常に動作する)
- 次に、MKAnnotationView をもう一度タップして、注釈の選択を解除し、その注釈の吹き出しを非表示にします (iOS5 では機能しますが、iOS6 では機能しません)。
didSelectAnnotationView は、注釈の最初の選択のためにのみ呼び出されることになっていることを理解しています。([1]: Selecting a MapView Annotation Twice )、およびこの記事と私が読んだ他の記事 ([2]: ios mapkit Closing annotation callouts by tap the map ) に基づいて、MKAnnotationView の追加のタップを検出したように見えます。 UITapGestureRecognizer が必要です。
したがって、私は UITapGestureRecognizer を使用しており、注釈ビューが既に選択されているときに追加のタップを適切に検出しています。また、タップを認識したときに deselectAnnotation を呼び出しており、吹き出し/注釈を非表示/選択解除していますそれぞれ。iOS5では問題なく動作しますが、iOS6では半分しか動作しません
iOS6 では、タップ ジェスチャ認識エンジンが呼び出され、コードを呼び出して吹き出しを非表示にし、注釈の選択を解除するとすべて問題ありませんが、selectAnnotationView メソッドが何らかの形で呼び出されるため、吹き出しが再び表示され、注釈が再び選択されます。
私が想定しているのは、タップジェスチャ認識エンジンで注釈ビューの選択を解除した直後に、タップイベントがまだアクティブであり、mapView がタッチイベントを検出して selectAnnotationView を呼び出すことです。選択解除されたものが再び選択されます。
iOS6 でのみ発生する理由はわかりませんが、目的の動作を処理するための他のアイデアについて意見を求めています。