我尝试了很多东西,在这一点上发布代码可能会令人困惑,所以让我先从概念开始。
我需要以某种方式将长按和触摸拖动的操作组合到一个操作中,例如LongPressThenDragGestureRecognizer。我试图在MKMapView上完成这个,所以我不能一直禁用用户交互,因为我想要地图的平移和缩放功能。
为了使事情复杂化,需要删除用户长按以识别交互的初始项(MKOverlay对象)并替换为新绘制的对象。此时,代码不再关心对象,只有手指处于任何给定点的位置(我将在移动时重绘拖动的对象)。
这是工作流程:
到目前为止,我已经尝试过很多东西,收效甚微。我到目前为止的最佳结果如下所示。这是使用MKMapView对象上的UILongPressGestureRecognizer(检查与叠加的交集)完成的,然后覆盖touchesBegan以进行地图触摸拖动。
我非常接近,我只是不知道如何将手势合二为一,这样用户就不必抬起手指再次触摸以开始拖动。
非常感谢任何想法。
答案 0 :(得分:0)
如果这是一个像这样的复杂手势,我会试图完全避开手势识别器并移动到touchesBegan,touchesMoved,touchEnded,touchesCancelled,你移动的状态,因为手势恰好知道你在哪里。
MKMapView有一个UIResponder基类,所以应该很容易制作你自己的MKMapView派生版本,它响应触摸事件(记住将它们传递到超级地图以维持它的正常功能)。