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

时间:2017-01-24 01:47:16

标签: time swift3 intervals seconds

我正试图让用户长按秒按钮,我试过这个但没有运气。它曾经在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)


        }
    }

1 个答案:

答案 0 :(得分:1)

由于这是UIButton,我建议您使用@IBAction并将buttonDown(_:)连接到 TouchDown 事件,并将buttonUp(_:)连接到 TouchUpInside TouchUpOutside

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

要连接操作,请单击故事板中的按钮,然后打开 Connections Inspector ,然后将所需事件拖到@IBAction

Connection an action in the Storyboard