我想在调用touchesEnded方法时在UIView上获得很长的时间。
我在寻找UIEvent中的'时间'或'持续时间'这样的属性,但我找不到。 我该怎么办?
(我正在制作一款游戏,我想根据长按时间更改图片尺寸。例如,让尺寸= 20 * long_press_sec)
环境: Xcode7.0.1 Swift2.0
答案 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()
}
}