ios – MapView检测滚动

ios – MapView检测滚动,第1张

概述我希望MKMapView继承自UIScrollView,就像UITableView和UICollectionView一样.这样,您可以覆盖UIScrollView委托方法并执行您需要执行的 *** 作. 我找到了将平移手势附加到MapView的方法,如下所示: UIPanGestureRecognizer* mapPanGestureRecognizer = [[UIPanGestureRecognize 我希望MKMapVIEw继承自UIScrollVIEw,就像UItableVIEw和UICollectionVIEw一样.这样,您可以覆盖UIScrollVIEw委托方法并执行您需要执行的 *** 作.

我找到了将平移手势附加到MapVIEw的方法,如下所示:

UIPanGestureRecognizer* mapPanGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(mapPanGestureHandler:)];[mapPanGestureRecognizer setDelegate:self];[self.mapVIEw addGestureRecognizer:mapPanGestureRecognizer];

除了mapVIEw具有减速元素之外,这种方法效果相当不错.例如,如果您处于中间滚动并抬起手指,地图会继续前进并减速然后最终停止.

我正在做的是使用核心图形在我的地图(另一个UIVIEw)上的叠加层中渲染一些屏幕外注释.除减速问题外,它工作得很好.

我需要知道的是地图已经移动了.我需要的参数我可以直接从地图本身查询.

有没有人找到一种技术来减速时获得回调?我的意思是我想我可以在手势结束时重复射击半秒钟左右使用计时器.

解决方法 MKMapVIEw没有类似的UIScrollVIEw委托回调,所以你需要即兴发挥.

Has anyone found a technique to get callbacks while decelerating? I mean I suppose I Could use a timer when the gesture ends to fire repeatedly for a half a second or so.

如果您想要准确地保持视图与地图的移动同步,那么您最好使用CAdisplaylink,因为每次刷新屏幕后都会收到回调.另一方面,如果使用计时器,则回调不一定与刷新率一致,您可能会看到工件.

你这样设置:

CAdisplaylink *link = [CAdisplaylink displaylinkWithTarget:self selector:@selector(updateVIEwsBasedOnMapRegion:)];[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];

然后像这样处理回调:

- (voID)updateVIEwsBasedOnMapRegion:(CAdisplaylink *)link{    // update whatever it is you need to update}

您可以专门使用它并丢弃手势识别器或保留手势识别器并在不需要时暂停链接.

总结

以上是内存溢出为你收集整理的ios – MapView检测滚动全部内容,希望文章能够帮你解决ios – MapView检测滚动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1007036.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存