【发布时间】:2014-07-05 16:02:28
【问题描述】:
我正在使用UIPanGestureRecogniser 来实现拖放。当拖动开始时,我需要识别被拖动的对象。但是对象相对较小。如果用户没有在对象的中心点击对象,它就不会被拖动。
问题在于,当手势处理程序第一次以状态UIGestureRecognizerStateBegan 调用时,手指已经移动了几个像素,所以[UIPanGestureRecognizer locationInView:] 返回那个点,这不是手势真正开始的地方。这是有道理的,因为它只能在移动几个像素后才能识别平移。但是,我需要手势的绝对开始,而不是手势首次被识别后的位置。
我在想也许我还需要实现一个轻击手势识别器,纯粹是为了捕捉第一次触摸。但这似乎是一个不寻常的要求。没有其他方法可以从平移手势识别器中获得第一次触摸吗?
【问题讨论】:
-
您是否想过通过继承
UIView来使用事件处理方法touchesBegan:和touchesMoved:? -
被拖动的视图有多大?理想情况下,它们应该至少 44x44 点。如果他们满足这个要求,那么也许我们可以解决您的问题。
-
目前最小的对象是 44x46 点。这是一个通用问题,会影响任何大小的任何拖动对象。较小的对象更明显,因为始终可拖动的对象中间的区域相对较小。
-
这能回答你的问题吗? UIPanGestureRecognizer starting point is off
标签: ios cocoa-touch uipangesturerecognizer