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

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

现在,从最初的实验中,regionDidChangeAnimated被多次调用,因此我将我的post请求移动到一个方法,该方法使用拖动地图手势识别器,然后执行post请求以从JSON提要中获取数据并在删除后重新加载我的地​​图引脚.这也很完美.

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

最佳答案 我有一个类似的问题:我想区分地图的显示部分是否已被程序或用户交互更改.显然,MKMapView对象并没有告诉我,即在两种情况下都调用了regionDidChangeAnimated而没有指示原因.

但由于MKMapView是UIView的子类,并且是UIResponder的子类,因此可以实现方法touchesBegan:withEvent:和touchesEnded:withEvent:来查找,如果在更改显示区域期间触摸了地图.

如果是这样,可以假设显示区域的变化是由用户交互引起的.当然,如果您更精确地研究这些方法的触摸和事件类型,您可以更具体.

点赞