在 UILongPressGestureRecognizer 中获取按下的时间
Get time pressed in UILongPressGestureRecognizer
我正在尝试获取按下 UIView
的时间,使用 UILongPressGestureRecognizer
但是,press:UILongPressGestureRecognizer
的状态是.began
、.end
、.cancelled
、.changed
。
但是,我想知道是否按下了 x
秒来更改 UIView
的控制。
我当前的代码是:
override func viewDidLoad() {
super.viewDidLoad()
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(NavigationViewController.displayDebugger(_:)))
self.view.addGestureRecognizer(longPressRecognizer)
}
@objc public func displayDebugger(_ press:UILongPressGestureRecognizer){
if press.state == .began{
startDate = Date()
}
else if press.state == .ended{
endDate = Date()
let components = Calendar.current.dateComponents([.second], from: startDate, to: endDate)
if(components.second! >= 1){
let debugger = LogView()
debugger.loadRequests()
}
}
}
但是,我找不到知道时间紧迫的方法。
有办法做到吗?
当长按开始时,记下时间(开始)。当它取消、完成或失败时;可选地以秒为单位计算从开始的距离。如果按下持续时间超过 5 秒,则 myView 为红色。
class MyViewController : UIViewController {
var start: Date?
override func loadView() {
view = UIView()
view.isUserInteractionEnabled = true
view.addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(tap)))
}
@objc func tap(gr: UILongPressGestureRecognizer) {
switch gr.state {
case .began:
start = Date()
case .failed, .cancelled, .ended:
guard let temp = start else { return }
let seconds = Date().timeIntervalSince(temp)
if seconds > 5 { myView.backgroundcolor = UIColor.red }
print(seconds)
default:
break
}
}
}
我正在尝试获取按下 UIView
的时间,使用 UILongPressGestureRecognizer
但是,press:UILongPressGestureRecognizer
的状态是.began
、.end
、.cancelled
、.changed
。
但是,我想知道是否按下了 x
秒来更改 UIView
的控制。
我当前的代码是:
override func viewDidLoad() {
super.viewDidLoad()
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(NavigationViewController.displayDebugger(_:)))
self.view.addGestureRecognizer(longPressRecognizer)
}
@objc public func displayDebugger(_ press:UILongPressGestureRecognizer){
if press.state == .began{
startDate = Date()
}
else if press.state == .ended{
endDate = Date()
let components = Calendar.current.dateComponents([.second], from: startDate, to: endDate)
if(components.second! >= 1){
let debugger = LogView()
debugger.loadRequests()
}
}
}
但是,我找不到知道时间紧迫的方法。 有办法做到吗?
当长按开始时,记下时间(开始)。当它取消、完成或失败时;可选地以秒为单位计算从开始的距离。如果按下持续时间超过 5 秒,则 myView 为红色。
class MyViewController : UIViewController {
var start: Date?
override func loadView() {
view = UIView()
view.isUserInteractionEnabled = true
view.addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(tap)))
}
@objc func tap(gr: UILongPressGestureRecognizer) {
switch gr.state {
case .began:
start = Date()
case .failed, .cancelled, .ended:
guard let temp = start else { return }
let seconds = Date().timeIntervalSince(temp)
if seconds > 5 { myView.backgroundcolor = UIColor.red }
print(seconds)
default:
break
}
}
}