如何在UIView上获得很长的时间

时间:2015-10-03 16:19:58

标签: ios swift uiview swift2

我想在调用touchesEnded方法时在UIView上获得很长的时间。

我在寻找UIEvent中的'时间'或'持续时间'这样的属性,但我找不到。 我该怎么办?

(我正在制作一款游戏,我想根据长按时间更改图片尺寸。例如,让尺寸= 20 * long_press_sec)

环境: Xcode7.0.1 Swift2.0

1 个答案:

答案 0 :(得分:5)

我认为您无法在标准长按手势识别器上自动获取该信息。您可以使用minimumPressDuration属性设置触发所需的时间,但随后会触发。

我已经做了一段时间,因为我已经完成了手势识别器的任何复杂功能,但是稍微查看了一些文档,这就是我认为你会得到手势的时间:

在调用您的操作方法时检查手势识别器的状态。当您看到UIGestureRecognizerStateBegan州时 记录时间(并记住添加最小手势时间,因为在最小长按时间过去之前,您的方法不会触发)。

当手势完成时,将再次调用状态为UIGestureRecognizerStateEnded的操作方法。此时,您应该能够计算手势的总持续时间。

编辑:

从@ ManikandanD的代码开始:

var longPressBeginTime: NSTimeInterval
var gesture: UILongPressGestureRecognizer = 
  UILongPressGestureRecognizer(target: self, action: "longPressed:")
gesture.minimumPressDuration = 0.2
self.Your_View_name.addGestureRecognizer(gesture)

func longPressed(longPress: UIGestureRecognizer) 
{
    if (longPress.state == UIGestureRecognizerState.Ended) 
    {
       let gestureTime = NSDate.timeIntervalSinceReferenceDate() -
         longPressBeginTime + longPress.minimumPressDuration 
       println("Gesture time = \(gestureTime)")
    }
    else if (longPress.state == UIGestureRecognizerState.Began) 
    {
      println("Began")
      longPressBeginTime = NSDate.timeIntervalSinceReferenceDate()
    }
}