UIPanGestureRecognizer的起点已关闭

Cor*_*ers 8 cocoa-touch uigesturerecognizer

我有一个附有UIPanGestureRecognizer的UIView,手势工作正常,除了起点不是平移首次启动的地方,它通常在x和y坐标中偏离5到15个像素.不幸的是,方差不是一致并且似乎与平移运动发生的速度有关.

为了验证触摸是否正确发送,我已经在子视图中添加了touchesBegan方法,并且它接收到正确的起始点,但是手势在其开始阶段没有提供相同的点.我的日志中的一些示例位于"行起始点"下方,是从手势识别器接收的第一个点.

touchesBegan got point 617.000000x505.000000
Line start point at 630.000000x504.0000001
touchesBegan got point 403.000000x503.000000
Line start point at 413.000000x504.000000 
touchesBegan got point 323.000000x562.000000
Line start point at 341.000000x568.000000
Run Code Online (Sandbox Code Playgroud)

有没有人见过这个问题?

关于如何解决这个问题而不必实现全新的UIGestureRecognizer的任何想法?

小智 6

您可以使用手势识别器的委托方法检测手势的初始触摸位置

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
Run Code Online (Sandbox Code Playgroud)


Dou*_*las 3

文档称,当手指“移动到足以被视为平移”时,平移手势就会开始。此移动是为了区分按下和拖动,因为用户的手指在尝试按下而不拖动时可能会稍微移动。

我认为这就是您在第一个触摸点和第一个被视为拖动部分的点之间看到的差异。