如何修改手势识别器的点击等待时长?双击与三击识别逻辑适配
调整双击/三击手势的点击间隔等待时间
嘿,你已经搞定了双击和三击的逻辑区分,接下来调整等待时间其实很简单,只需要给你的UITapGestureRecognizer设置对应的时间属性就行,分两种情况看系统版本:
1. iOS 15 及以上版本
用maximumIntervalBetweenSuccessiveTaps属性,它控制连续两次点击之间的最大允许间隔(单位是秒)。比如你想把等待时间改成0.3秒,创建手势的时候这么写:
// 双击手势 let doubleTapRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTap)) doubleTapRecognizer.numberOfTapsRequired = 2 doubleTapRecognizer.maximumIntervalBetweenSuccessiveTaps = 0.3 // 自定义间隔时间 view.addGestureRecognizer(doubleTapRecognizer) // 三击手势 let tripleTapRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTripleTap)) tripleTapRecognizer.numberOfTapsRequired = 3 tripleTapRecognizer.maximumIntervalBetweenSuccessiveTaps = 0.3 view.addGestureRecognizer(tripleTapRecognizer)
2. iOS 15 以下版本
用旧的timeIntervalBetweenTaps属性,用法和上面一致:
// 双击手势 let doubleTapRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTap)) doubleTapRecognizer.numberOfTapsRequired = 2 doubleTapRecognizer.timeIntervalBetweenTaps = 0.3 view.addGestureRecognizer(doubleTapRecognizer) // 三击手势 let tripleTapRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTripleTap)) tripleTapRecognizer.numberOfTapsRequired = 3 tripleTapRecognizer.timeIntervalBetweenTaps = 0.3 view.addGestureRecognizer(tripleTapRecognizer)
额外说明
这个属性的作用是:如果两次点击的间隔超过你设置的时间,手势识别器就不会把它们当成连续的点击序列,自然也就不会触发双击/三击事件。你可以根据产品需求调整这个数值,比如想让用户有更充足的时间完成三击,就把时间设长一点(比如0.5秒)。
另外,你之前写的shouldBeRequiredToFailBy逻辑保持不变就好,它能确保三击触发时不会同时触发双击,和这个时间设置是互补的关系~
内容的提问来源于stack exchange,提问作者Micgal
相关产品推荐
相关产品推荐

