从UIPanGestureRecognizer获取触摸坐标

10

从[UIPanGestureRecognizer translationInView]中获取绝对触摸坐标是否可能? 我正在开发iPad应用程序,一直在努力寻找从UIPanGestureRecognizer中获取触摸坐标值!

我还尝试使用从translationInView获得的值进行偏移,但我并不真正理解其背后的数学原理...

有任何建议吗?

Ravi

2个回答

18

translationInView 是手势中的增量变化。如果您将手指向左移动20个点,您将得到(-20.0, 0.0),在这种意义上它已经是“绝对”的了。

您可能想要的是相对于传入的视图的 locationInView,即使该视图不是识别事件的视图。通常,您会将视图控制器的视图或将处理事件的视图,或者在您的实现中更有意义的子视图作为参数传递。

另外,请注意,如果您需要真正的绝对位置,您可以通过将 nil 作为参数传递,返回相对于窗口(即“绝对”)的位置。

如果您需要与其他视图进行逻辑操作,您可以使用 UIView 实例方法将坐标从一个视图转换为另一个视图: convertRect:fromView:, convertRect:toView:, convertPoint:fromView:, convertPoint:toView:。这些方法也接受 nil 作为视图参数,意味着相对于窗口的“绝对”位置。


太棒了!我完全没有意识到这些手势是从UIGestureRecognizer派生出来的!再次感谢! - Ravi
5
根据文档,translationInView: 返回的是总移动量而非增量移动量。 - Jonathan.
1
@Jonathan。虽然晚了一年,但我已经修复了它。 - Can

0

这里有一个更简单的方法:

gesture.locationInView(myView)

返回一个 CGPoint 类型的点,表示接收者所代表的手势在给定视图中的位置。


你能详细说明一下这个函数的作用以及它与原帖中尝试过的方法有何不同吗?它是否返回一个 CGPoint 值? - sgress454

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接