0

MKMapView デリゲートに関する問題に直面しています。

iOS5 では、マップビューのピンをクリックするdidSelectAnnotationView:と、最初にデリゲートが呼び出され、次にviewForAnnotation:デリゲートが呼び出されます。

iOS6 では、マップ ビューでピンをクリックするviewForAnnotation:と、最初に が呼び出され、次にdidSelectAnnotationViewデリゲートが呼び出されます。

したがって、私のアプリは iOS5 では正常に動作しますが、iOS6 ではうまく動作しません。これは、didSelectAnnotationView:デリゲートに設定する必要がある座標情報があるためです。

viewForAnnotation:の前にデリゲートが呼び出されると、間違っdidSelectAnnotationView:た座標情報が取得されます。

誰かがアイデアを得ましたか?ありがとう!

4

2 に答える 2

1

viewForAnnotationiOS が注釈の 1 つを表示する必要があるときはいつでも呼び出すことができます。didSelectAnnotationViewいつ呼び出されるかには関係ありません。iOS 5 でパターンを見つけたと思うかもしれませんが、それはアプリ内の何かのまぐれであり、決して信頼すべきではありませんでした。正しく使用すれば、iOS 5 および 6 だけでなく 6.1、6.2、6 でも動作し、iOS 7 でもあまり変わらないと思います。の署名をviewForAnnotation見ると、パラメーターの 1 つが注釈であることがわかります。これは、アプリが描画しようとしているアイテムであり、呼び出したときに注釈を付けた情報が含まれています[mapView addAnnotation:myAnnotation]。したがって、それを MKAnnotation 実装にキャストして、情報を抽出します。

于 2013-05-18T08:32:47.187 に答える
0

ロジックを変更します。

viewForAnnotation でビューを準備します (理論上はいつでも呼び出すことができます)。それはこれにぴったりの場所です!

標準の注釈ビューを表示する場合は、指定された注釈または nil に対して表示する注釈ビュー。

于 2013-05-18T08:02:58.303 に答える