在 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
,我建议使用 @IBAction
s 并将 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)
}
要连接动作,请单击 Storyboard 中的按钮并调出 Connections Inspector,然后从所需的事件拖动到 @IBAction
s。
我正在尝试获取用户长按按钮的秒数,我已经尝试过但没有成功。它曾经在 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
,我建议使用 @IBAction
s 并将 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)
}
要连接动作,请单击 Storyboard 中的按钮并调出 Connections Inspector,然后从所需的事件拖动到 @IBAction
s。