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

使用以下MKMapViewDelegate方法:

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

每次地图区域发生变化时都会调用这些方法。

于 2014-06-24T09:29:24.697 回答