iOS6にしたらMKMapViewのデリゲートメソッドが呼ばれなくなった

地図アプリを作成しているのですが,カスタムアノテーション(ピンを任意の画像にする)を利用したいからmapView:viewForAnnotation:のデリゲートメソッドを利用していて,今までちゃんと動作していたのだけれども,iOS6になってからこのメソッドが呼ばれなくなりました.で,プログラム中で一度消して再度追加するとちゃんとカスタムなアノテーションになっている.
あでででで?って思って調べたら.こんな書き込み発見.

http://openradar.appspot.com/12346693

要するに,iOS5まではmapviewにアノテーションを追加したあとにデリゲートを設定してもちゃんとデリゲートメソッドを呼び出してくれてたんだけど,iOS6はそういうふうにしてくれないよってことです.

[mapView addAnnotation:hogehoge];
mapView.delegate = self;

はiOS6ではだめで,

mapView.delegate = self;
[mapView addAnnotation:hogehoge];

にしなきゃだめってことです.まあ考えてみれば当然なのですが,今まで普通に動いていたので気が付きませんでした.

地図が変更になったと同時に,細かいところで挙動が少し変わっているんでしょう.

カテゴリー: iOSアプリ開発, 技術的なこと パーマリンク