我已经尝试了很多东西,此时发布代码可能会让人感到困惑,所以让我从这个概念开始。
我需要将长按压和触摸拖动的操作以某种方式合并到一个操作中,类似于LongPressThenDragGestureRecognizer。我试图在MKMapView上实现这一点,所以我不能一直禁用用户交互,因为我需要地图的pan和缩放功能。
更复杂的是,用户长时间按下以识别交互的初始项( MKOverlay对象)将需要删除并替换为新绘制的对象。在这一点上,代码不再关心对象了,只关心手指在任何给定点上的位置(我将在拖动对象移动时重新绘制对象)。
这就是工作流程:
在地图上向
H 111 app用一个新的地图覆盖<代码>H 212H 113 app使用户在地图上的交互允许pan/缩放/注释选择等等。H 214/code>G 215)
到目前为止,我已经尝试了许多事情,但没有取得什么成功。我到目前为止取得的最好的结果如下所示。这是使用UILongPressGestureRecognizer在MKMapView对象上完成的(检查与覆盖的交集),然后重写touchesBegan以进行地图触摸拖动。
显示了appropriately
Map 覆盖,用户成功地执行了一个长按压手势,该手势被识别为用户交互被禁用,覆盖被替换为绘制的operationWhen必须提起手指并再次触摸以启动拖动operationWhen用户升降机手指,绘制新的覆盖并再次启用地图交互。
我是如此接近,我只是不知道如何将手势组合成一个,这样用户就不必举起他/她的手指,并再次触摸,以启动拖动。
任何想法都会受到极大的赞赏。
发布于 2012-08-01 10:58:06
如果这是一个像这样复杂的手势,我会倾向于完全避免使用手势识别器,然后移动到touchesBegan、touchesMoved、touchedEnded、touchesCancelled,其中有一种状态就是,当手势碰巧知道你在哪里时,你会移动。
MKMapView有一个UIResponder基类,所以应该很容易制作自己派生的MKMapView版本,它响应触摸事件(记住将它们传递给超级用户,映射以维护它的正常功能)。
https://stackoverflow.com/questions/7519302
复制相似问题