2

MKMapViewドラッグとズームが停止したかどうかを判断する方法はありますか?

現在UIPanGestureRecognizer、ドラッグ用の を追加しましたが、マップがスクロールしていても、ユーザーが指を離すとすぐにMKMapView受け取ります。gestureRecognizer.state == UIGestureRecognizerStateEnded私が理解しようとしているのは、マップがまだ動いているとき、および/またはユーザーがマップをもう一度タッチしてマップを再度ドラッグするときに、マップ注釈のサーバーデータをロードしないようにする方法です? データ ロード メカニズムは、マップの移動とズームが停止し、あらかじめ定義された時間静止している場合にのみ呼び出す必要があります。

これは私がこれまでに実装したものです:

- (void)viewDidLoad {
...
  UIPanGestureRecognizer* panRec = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(didDragMap:)];
  [panRec setDelegate:self];
  [panRec setDelaysTouchesBegan:YES];
  [panRec setDelaysTouchesEnded:YES];
  [panRec setCancelsTouchesInView:YES];
  [self.mapView addGestureRecognizer:panRec];
}

そしてセレクターメソッドdidDragMap:

- (void)didDragMap:(UIGestureRecognizer*)gestureRecognizer {
if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
    _searchBar.text = @"";
    _filtered = NO;
    _crosshair.hidden = NO;
    [self removeAllAnnotationExceptOfOriginalLocation];
}
else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
    [self performSelector:@selector(delayAddressResolving:) withObject:nil afterDelay:1.0];
}

}

セレクター メソッドdelayAddressResolving:は、サーバーから必要なデータを読み込んで、注釈の情報を表示しています。

すべてのメモは大歓迎です!

4

2 に答える 2

0

MKMapView がドラッグ/移動されたかどうかを判断し ます http://developer.apple.com/library/ios/#samplecode/Breadcrumb/Listings/Classes_BreadcrumbViewController_m.html。それはあなたを助けるかもしれません

于 2014-06-24T09:36:03.173 に答える
0

次のMKMapViewDelegate方法を使用します。

    - (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
    - (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated

これらのメソッドは、マップ領域が変更されるたびに呼び出されます。

于 2014-06-24T09:29:24.697 に答える