在 Swift 3 中检测 UILongPressGestureRecognizer 中的时间流逝

Detecting time lapse in UILongPressGestureRecognizer in Swift 3

我正在尝试获取用户长按按钮的秒数,我已经尝试过但没有成功。它曾经在 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)


        }
    }

因为这是一个 UIButton,我建议使用 @IBActions 并将 buttonDown(_:) 连接到 TouchDown 事件,然后连接 buttonUp(_:)TouchUpInsideTouchUpOutside.

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)
}

要连接动作,请单击 Storyboard 中的按钮并调出 Connections Inspector,然后从所需的事件拖动到 @IBActions。