我希望的是MKMapView继承UIScrollView就像UITableView和UICollectionView是.这样,您可以覆盖UIScrollView委托方法并执行您需要执行的操作.
我找到了将平移手势附加到MapView类似的方法,所以:
UIPanGestureRecognizer* mapPanGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(mapPanGestureHandler:)];
[mapPanGestureRecognizer setDelegate:self];
[self.mapView addGestureRecognizer:mapPanGestureRecognizer];
Run Code Online (Sandbox Code Playgroud)
除了mapView具有减速元件的事实之外,这相当好.例如,如果您处于中间滚动并抬起手指,地图会继续前进并减速然后最终停止.
我正在做的是UIView使用核心图形在我的地图(另一个)顶部的叠加层中渲染一些屏幕外注释.除减速问题外,它工作得很好.
我需要知道的是地图已经移动了.我需要的参数我可以直接从地图本身查询.
有没有人找到一种技术来减速时获得回调?我的意思是我想我可以在手势结束时重复射击半秒钟左右使用计时器.
Tim*_*ose 12
MKMapView没有类似的委托回调UIScrollView,所以你需要即兴创作.
有没有人找到一种技术来减速时获得回调?我的意思是我想我可以在手势结束时重复射击半秒钟左右使用计时器.
如果您想要准确地保持视图与地图的移动同步,那么您最好使用它,CADisplayLink因为您将在每次屏幕刷新后收到回调.另一方面,如果使用计时器,则回调不一定与刷新率一致,您可能会看到工件.
你这样设置:
CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(updateViewsBasedOnMapRegion:)];
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
Run Code Online (Sandbox Code Playgroud)
然后像这样处理回调:
- (void)updateViewsBasedOnMapRegion:(CADisplayLink *)link
{
// update whatever it is you need to update
}
Run Code Online (Sandbox Code Playgroud)
您可以专门使用它并丢弃手势识别器或保留手势识别器并在不需要时暂停链接.
| 归档时间: |
|
| 查看次数: |
2234 次 |
| 最近记录: |