检测用户是否移动地图或是否以编程方式发生iOS Mapkit

时间:2013-01-22 18:00:20

标签: ios mkmapview mapkit mkannotation mkannotationview

好的,我有一个地图加载了来自远程JSON提要的引脚,它被加载到应用程序中。一切正常。

现在,从最初的实验regionDidChangeAnimated被多次调用,所以我将我的帖子请求移动到一个方法,该方法使用拖动地图手势识别器,然后执行发布请求以从JSON提要中获取数据并重新加载我的地​​图去掉它们后的针脚。这也很有效。

现在我唯一的问题是,如果我选择一个靠近屏幕边缘的注释,地图会稍微移动以适应注释标注的显示。问题是regionDidChangeAnimated在发生这种情况时被调用,但是我的发布请求不是因为我使用手势识别器调用它,因此地图不会被用户干预而是移动操作系统。我不希望将我的Post请求移动到regionDidChangeAnimated,因为这被多次调用,但我想知道是否有办法进行测试,如果用户导致地图移动或它做到了 - 如上所述,自我适应标注。我所研究的研究中的regionDidChangeAnimated可能被调用的时间超过了必要的次数,因此一些指导对于如何防止或检测用户交互与操作系统移动地图有好处。

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题:我想区分地图的显示部分是否已被程序或用户交互更改。显然,MKMapView个对象并没有这样告诉我,即两个案例都调用regionDidChangeAnimated而没有指示原因。 但由于MKMapViewUIView的子类,而UIRespondertouchesBegan:withEvent:的子类,因此可以实现方法touchesEnded:withEvent:和{{1}}来查找地图在更改显示区域时触摸了 如果是这样,可以假设显示区域的变化是由用户交互引起的。当然,如果你更精确地研究这些方法的触摸和事件类型,你可以更具体。

答案 1 :(得分:0)

我是这样一个板子,有时写作问题可以帮助。我只是删除了regionDidChangeAnimated,因为我不需要它和那里出现的代码我移动到我的手势,这是删除注释之前重新添加它们doh!