iOS -- 单击,双击手势冲突解决 Swift
直接上代码,代码中有注释
第一种写法
///手势
lazy var tapGestureRecognizer: UITapGestureRecognizer = {
let tap = UITapGestureRecognizer(target: self, action: #selector(tapAction(tap:)))
return tap
}()
///上次点击时的时间
var lastTapTime:TimeInterval = 0
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .gray
self.view.addGestureRecognizer(tapGestureRecognizer)
}
@objc func tapAction(tap:UITapGestureRecognizer) {
let point = tap.location(in: self.view)
print(point)
let time = Date(timeIntervalSinceNow: 0).timeIntervalSince1970
if time - lastTapTime > 0.25 {//单击
//延迟执行 0.25秒
self.perform(#selector(sigleTapAction), with: nil, afterDelay: 0.25)
}else {//双击
//取消performSelector方法注册过的方法,就是说当上面这个方法正在运行,比如希望0.25秒钟之后执行某一个方法,但是没到0.25秒钟的情况下取消performSelector
NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(sigleTapAction), object: nil)
print("双击手势")
}
lastTapTime = time
}
//Mark: 单击操作
@objc func sigleTapAction() {
print("单击手势")
}
第二种写法
///手势 单击
lazy var tapGestureRecognizer: UITapGestureRecognizer = {
let tap = UITapGestureRecognizer(target: self, action: #selector(tapAction(tap:)))
tap.numberOfTapsRequired = 1
return tap
}()
///手势 双击
lazy var tapGestureRecognizer2: UITapGestureRecognizer = {
let tap = UITapGestureRecognizer(target: self, action: #selector(tapAction2(tap:)))
tap.numberOfTapsRequired = 2
return tap
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .gray
tapGestureRecognizer.require(toFail: tapGestureRecognizer2) //这句很关键
self.view.addGestureRecognizer(tapGestureRecognizer)
self.view.addGestureRecognizer(tapGestureRecognizer2)
}
@objc func tapAction(tap:UITapGestureRecognizer) {
print("单击---手势")
}
@objc func tapAction2(tap:UITapGestureRecognizer) {
print("双击---手势")
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgaaigi
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01