有没有办法确定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:正在从服务器加载所需的数据以显示我的注释信息。
欢迎所有笔记!