Time 在Swift 3的UILongPress手势识别器中检测时间推移

Time 在Swift 3的UILongPress手势识别器中检测时间推移,time,swift3,intervals,seconds,Time,Swift3,Intervals,Seconds,我正在尝试让用户长按按钮的秒数,我尝试过这个,但没有成功。它曾经在Swift 2中工作得很好。现在它给了我一个很长的十进制数 @IBOutlet weak var button: myButton! var longGesture = UILongPressGestureRecognizer(target: self, action: #selector(tapLong(_:))) myButton.addGestureRecognizer(longGesture) func tap

我正在尝试让用户长按按钮的秒数,我尝试过这个,但没有成功。它曾经在Swift 2中工作得很好。现在它给了我一个很长的十进制数

@IBOutlet weak var button: myButton!

var longGesture = UILongPressGestureRecognizer(target: self, action: #selector(tapLong(_:)))

 myButton.addGestureRecognizer(longGesture)


 func tapLong(_ sender: AnyObject) {

    var touchTime = 0.0

    if sender is UILongPressGestureRecognizer {

        if sender.state == UIGestureRecognizerState.began {

            touchTime = CFAbsoluteTimeGetCurrent()

        } else if sender.state == UIGestureRecognizerState.ended {

            touchTime = CFAbsoluteTimeGetCurrent() - touchTime

            print(touchTime)


        }
    }

由于这是一个
ui按钮
,我建议使用
@IBAction
s并将
buttonDown(:)
连接到触地事件,将
buttonUp(:)
连接到触地内和触地外


要连接动作,请单击情节提要中的按钮,打开连接检查器,然后从所需事件拖动到
@IBAction
s


我觉得很明显我的按钮有一个插座。谢谢你的帮助,我已经把它连接上了,只是它不会给我几秒钟,它会给我很大的十进制数。。。我不确定它是什么格式。该值是一个
Double
并指定秒数。因此
1.500001202030
的时间将略长于1秒和1/2秒。如果您想要一个
Int
,则使用
Int(已用)
扔掉小数秒。
var startTime = Date()

@IBAction func buttonDown(_ sender: UIButton) {
    startTime = Date()
}

@IBAction func buttonUp(_ sender: UIButton) {
    let endTime = Date()
    let elapsed = endTime.timeIntervalSince(startTime)
    print(elapsed)
}