4

わかりましたので、アプリに読み込まれたリモート JSON フィードからのピンが読み込まれたマップがあります。これはすべてうまくいきます。

最初の実験からregionDidChangeAnimated複数回呼び出されるようになったので、ポスト リクエストをドラッグ マップ ジェスチャ レコグナイザを使用するメソッドに移動しました。メソッドはポスト リクエストを実行して JSON フィードからデータを取得し、マップ ピンを削除した後にリロードします。これも完璧に機能します。

今残っている唯一の問題は、画面の端に近い注釈を選択すると、注釈の吹き出しの表示に合わせてマップがわずかに移動することです。これが発生すると問題regionDidChangeAnimatedが呼び出されますが、ジェスチャー認識機能を使用して呼び出すと、投稿要求は呼び出されないため、マップはユーザーの介入ではなく OS によって移動されました。これは複数回呼び出されるため、Post リクエストを に移動したくありませんがregionDidChangeAnimated、ユーザーがマップを移動させたのか、コールアウトに対応するためにそれ自体が移動したのかをテストする方法があるかどうかを知りたいです上で説明したように。私が調べた regionDidChangeAnimated調査によると、必要以上に呼び出される可能性があるため、それを防ぐ方法や、マップを移動する OS に対するユーザー操作を検出する方法についてのガイダンスが役立ちます。

4

2 に答える 2

2

同様の問題があります。マップの表示部分がプログラムによって変更されたのか、ユーザーの操作によって変更されたのかを区別したいのです。どうやら、MKMapViewオブジェクトはそのように教えてくれません。つまりregionDidChangeAnimated、どちらの場合も、理由を示すことなく呼び出されます。
しかし、MKMapViewは のサブクラスでありUIView、これは のサブクラスであるため、メソッドをUIResponder実装して、表示領域の変更中にマップがタッチされたかどうかを調べることができます。 もしそうなら、表示領域の変化はユーザーの操作によって引き起こされたと推測できます。もちろん、一連のタッチとこれらのメソッドのイベント タイプをより正確に調査すれば、より具体的にすることができます。touchesBegan:withEvent:touchesEnded:withEvent:

于 2013-03-22T15:08:15.653 に答える
0

私はそのような板であり、時々書く問題が助けになることがあります。regionDidChangeAnimatedは必要ないので、単に削除しました。そこに存在するコードは、Annotationsを削除してから再度追加するというジェスチャーに移動しました。

于 2013-01-22T18:08:17.767 に答える