有没有办法确定 MKMapView
拖动和缩放停止?
现在我添加了一个 UIPanGestureRecognizer
用于拖动 MKMapView
但我会收到gestureRecognizer.state == UIGestureRecognizerStateEnded
即使 map 正在滚动,用户也会立即抬起手指。我试图弄清楚的是,本地图仍在移动和/或用户再次触摸 map 以再次拖动 map 时,如何防止为我的 map 注释加载服务器数据?仅本地图停止移动和缩放并且在预定时间内静止不动时,才应调用数据加载机制。
这是我到目前为止实现的:
- (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: 正在从服务器加载所需的数据以显示我的注释信息。
欢迎所有笔记!
最佳答案
使用以下 MKMapViewDelegate
方法:
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
每次 map 区域发生变化时都会调用这些方法。
关于ios - 检测结束拖动/缩放 MKMapView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24382820/