2011-09-13 6 views
3

MKMapViewを使用して小さなアプリケーションを作成しました。ここではMKAnnotationsが継続的にマップに追加されています。ユーザーがマップビューに触れない限り、うまくいきます。ユーザーインタラクションが新しい注釈ビューをブロックする

ユーザーが地図とやりとりしようとすると、新しいMKAnnotationViewsが地図に追加されていないことに気付きました。実際、ユーザーがマップとやりとりを続けている限り、mapView: didAddAnnotationViews:は呼び出されませんでした。ユーザーの指が画面を離れるとすぐに、mapView: didAddAnnotationViews:が呼び出され、追加されるはずのMKAnnotationViewsのすべての引数が渡されます。

私はmapView: didAddAnnotationViewsへの呼び出しを強制しようとしたが、私は、引数としてMKAnnotationViewsを渡す必要があります(ので、私は定期的な通話に基づいて何かを使用することはできません)、と私はmapView: viewForAnnotation:の終わりに、それを呼び出すようにしようとすると、それはdoesnのビューがまだマップビューに追加されていないので、作業していません。別のスレッドを介してアノテーションを追加しようとするのは悪い考えです。これはおそらくCollection was mutated while being enumeratedの例外になります(おそらく、アノテーションビューを格納する可変配列から来ているため)。

これを修正する方法はありますか?

答えて

0

デリゲートを実装するカスタムクラスを作成できます。

MKAnnotationViewのinitWithAnnotation:メソッドを使用すると、アノテーションを作成して配列に追加することができます。

次に、addAnnotations:メソッドを使用してアノテーションを追加することで、それらをすべてマップに追加できます。

カスタムアノテーションを使用する限り、手動でアノテーションを作成する必要があります。したがって、ユーザーはできません。

+0

ありがとうございますが、これは本当に私の質問に答えるものではありません。注釈はストリームから来ているので、配列にすべての注釈を格納することはできません。 –

関連する問題