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