Time 在Swift 3的UILongPress手势识别器中检测时间推移
我正在尝试让用户长按按钮的秒数,我尝试过这个,但没有成功。它曾经在Swift 2中工作得很好。现在它给了我一个很长的十进制数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
@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)
}