「MKMapViewに表示される複数の注釈コールアウト」も参照してください。MKMapViewに表示される
複数の注釈コールアウト
フレームワークは複数の選択をサポートしていないようです。そのため、この動作にはカスタムコールアウトを実装する必要があります。リンクされた質問への回答は、選択を自分で管理できるように、コールアウトを注釈ビューの一部にすることを提案しています。個人的には、コールアウトを個別のアノテーションとして実装するのが好きです。カスタムコールアウトを使用したサンプルプロジェクトがここにあります。
https://github.com/jacobjennings/JJMapCallout
これが私の解決策でした:
MKAnnotationView-カスタム注釈ビューをロックして、場所の更新を固定します
このプロジェクトでは、MKMapViewデリゲートメソッドを転送します
- (void)mapView:(MKMapView *)aMapView didSelectAnnotationView:(MKAnnotationView *)aView
- (void)mapView:(MKMapView *)aMapView didDeselectAnnotationView:(MKAnnotationView *)aView
それぞれの注釈に。これにより、予想されるコールアウト動作を実装できます。ただし、didDeselectAnnotationViewメッセージを無視して、コールアウトを表示したままにすることができます。
ユーザーが地図をタップして注釈をクリアしたかどうか(ピンをタップしなかったかどうか)を確認するには、didDeselectAnnotationViewメソッドでmapView.selectedAnnotationsの値を確認します。値が空の場合は、コールアウトをクリアする必要があります。