访问平移手势的速度

时间:2014-11-05 01:26:09

标签: ios objective-c swift uipangesturerecognizer

我想获得平移手势的速度,我想使用发送方的速度属性,但它似乎不起作用:

@IBAction func handleGesture(sender: AnyObject) {
    let v = sender.velocity
}

但它会抛出错误说:

"ambiguous use of 'velocity'"

如果这不是获取平移手势速度的方法,那是什么?

2 个答案:

答案 0 :(得分:6)

UIPanGestureRecognizer没有名为velocity的属性。您应该使用velocityInView方法。

func userPanned(sender: UIPanGestureRecognizer) {
    let v = sender.velocityInView(self.view)
}

答案 1 :(得分:0)

sender.velocityInView(self.view)为您提供速度,以像素/秒为单位。为了获得准确的速度,您需要通过将速度除以60来将速度更改为每分钟像素数,如下所示:

sender.velocityInView(self.view).x / 60-对于水平

sender.velocityInView(self.view).y / 60-对于垂直

因此,您只需通过添加初始值即可更新位置,如下所示:

var initialLocation:CGPoint? ->全球

initialLocation.x =(initialLocation ?? 0)

(initialLocation.x)! =(initialLocation.x)! +(sender.velocity(in:colorSlider!)。x / 60)-对于水平

(initialLocation.y)! =(initialLocation.y)! +(sender.velocity(in:colorSlider!)。y / 60)-对于垂直

谢谢。