如何在UIView上长按

Mai*_*awa 2 uiview ios swift swift2

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

我在UIEvent中寻找诸如“时间”或“持续时间”之类的属性,但找不到。我能怎么做?

(我正在创建一个游戏,我想更改图形大小以响应长按时间。例如,让size = 20 * long_press_sec)

环境:Xcode7.0.1 Swift2.0

Dun*_*n C 5

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

自从我完成了手势识别器的所有复杂工作以来已经有一段时间了,但是在看了一些文档之后,我认为您会得到手势时间:

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

UIGestureRecognizerStateEnded手势完成时,将再次调用您的action方法。此时,您应该能够计算出手势的总持续时间。

编辑:

从@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()
    }
}
Run Code Online (Sandbox Code Playgroud)