1.防止多点事件
import UIKit
class TapGestureManager:UITapGestureRecognizer,UIGestureRecognizerDelegate {
// 想间隔的时长
var intervalTime: TimeInterval?
//用于完成间隔的计时器
private var eventTimer: Timer?
override init(target: Any?, action: Selector?) {
super.init(target: target, action: action)
delegate = self
}
// 是否响应触摸手势的代理方法
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if (eventTimer != nil) {
return false
}
eventTimer = Timer(timeInterval: intervalTime ?? 0, target: self, selector: #selector(deinitTimer), userInfo: nil, repeats: false)
RunLoop.current.add(eventTimer!, forMode: RunLoop.Mode.common)
return true
}
@objc func deinitTimer() {
eventTimer?.invalidate()
eventTimer = nil
}
}
调用方法
let tap = TapGestureManager(target: self, action: #selector(locaViewTap))
// 防止多点 -- 设置手势的间隔时间:1秒
tap.intervalTime = 1
locaView.addGestureRecognizer(tap)
@objc func locaViewTap() {
}