我正在尝试使用UILongPressGestureRecognizer
获取按下UIView
的时间
但是,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()
}
}
}
但是,我找不到知道时间的方法。有没有办法做到这一点?
发布于 2018-06-19 10:41:19
当长按开始时,注意时间(开始)。当它取消、结束或失败时;可以选择计算距离起点的秒数。如果按下时间超过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
}
}
}
https://stackoverflow.com/questions/50918416
复制相似问题