iOS[swift]防止单点手势连续快速触发

按钮被连点,单点手势被连续触发有时候我们的APP会出现各种糟糕的现象(例如: 绑定事件是弹出个页面,连点之后连续弹出多个相同的页面,或者绑定某个指令,连点之后连续下发多个指令等等)等等... 防止按钮的连点我已经在之前的文章中总结过了,本文总结的是防止自定义绑定的单点手势的连点:

废话不说,老规矩上代码:

import UIKit

class TapGestureManager:UITapGestureRecognizer,UIGestureRecognizerDelegate {
    //想间隔的时长
    var intervalTime: NSTimeInterval?
    //用于完成间隔的计时器
    private var eventTimer: NSTimer?
    
    override init(target: AnyObject?, action: Selector) {
        super.init(target: target, action: action)
        delegate = self
    }
    // 是否响应触摸手势的代理方法
    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
        if (eventTimer != nil) {
            return false
        }
        
        eventTimer = NSTimer(timeInterval: intervalTime ?? 0, target: self, selector: #selector(deinitTimer), userInfo: nil, repeats: false)
        NSRunLoop.currentRunLoop().addTimer(eventTimer!, forMode: NSRunLoopCommonModes)
        
        return true
    }
    
    func deinitTimer() {
        eventTimer?.invalidate()
        eventTimer = nil
    }
}

以上的代码就可以防止单点手势连续快速触发,食用方法如下:

    override func viewDidLoad() {
        super.viewDidLoad()
        // 新建一个绑定点击事件的单点手势(注: 不一定是绑定一个事件的手势,闭包也可以,自己修改这里不赘述)
        let tap = TapGestureManager(target: self, action: #selector(test_Tap))
        // 设置手势的间隔时间:10秒
        tap.intervalTime = 10
        //添加手势,(搞定!)
        userCenterImage.addGestureRecognizer(tap)
    }
    func test_Tap() {
       //...
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值