iOS[swift]防止单点手势连续快速触发_swift 修改手势响应时间-程序员宅基地

技术标签: 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() {
       //...
    }

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lxlzy/article/details/103006419

智能推荐

【二分】烦恼的高考志愿_烦恼的高考志愿二分法-程序员宅基地

文章浏览阅读455次。烦恼的高考志愿题目计算机竞赛小组的神牛V神终于结束了万恶的高考,然而作为班长的他还不能闲下来,班主任老t给了他一个艰巨的任务:帮同学找出最合理的大学填报方案。可是v神太忙了,身后还有一群小姑娘等着和他约会,于是他想到了同为计算机竞赛小组的你,请你帮他完成这个艰巨的任务。现有m(m≤100000) 所学校,每所学校预计分数线是 ai(ai ≤ 10^6 )。有n(n≤100000..._烦恼的高考志愿二分法

使用HTML制作静态网站 中国传统文化 丝绸之路 (学生网页设计作业源码)_丝绸之路网页设计-程序员宅基地

文章浏览阅读925次。传统春节网页设计、圣诞节节日发展、中秋、端午传统节日习俗庆祝、地区特色,网站模板 、等网站的设计与制作。️ 大学生传统节日网页作业成品采用DIV CSS布局制作,主要内容包括等内容,作品共多个页面,学生HTML静态网页基础水平制作,页面排版干净简洁。网页技术方面应用包括网页背景颜色、字号字体设置、超链接、图文页面、菜单栏、顶部大图等网页基础知识点 一套优质的网页设计应该包含 (具体可根据个人要求而定)网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网..._丝绸之路网页设计

Python_基础_(模块,time,random,os,sys,json,shelve,xml,序列化反序列化)-程序员宅基地

文章浏览阅读98次。一,Import的基本用法import1.执行对应的文件2.引入变量名3.当一个文件被import,索贝import中的代码会被执行一遍,例如当 import cal ##cla中有inport("xxx"),则会输出## Import引用方法# cal.py文件中def add(x,y) return x + y# test.py文件中..._如何查看shelve,os,sys,time版本号

API设计原则 - Qt官网的设计实践总结_qt的设计准则和最佳实践-程序员宅基地

文章浏览阅读502次,点赞2次,收藏3次。原文链接:API Design Principles - Qt Wiki基于Gary的影响力上 Gary Gao 的译文稿:C++的API设计指导译文发在酷壳 - CoolShell:API设计原则, 2017-07-25API设计原则 - Qt官网的设计实践总结???? 译序Qt的设计水准在业界很有口碑,一致、易于掌握和强大的API是Qt最著名的优点之一。此文既是Qt官网上的API设计指导准则,也是Qt在API设计上的实践总结。虽然Qt用的是C++,但其中设计原则和思考是具有普适性的(如果你对C_qt的设计准则和最佳实践

清华大学计算机科学陈莉,Institute of Computer Graphics and Computer-Aided Design | Li Chen(陈莉)...-程序员宅基地

文章浏览阅读422次。PublicationsLi Chen, Issei Fujsihiro, and Kengo Nakajima, "Optimizing Parallel Performance of Unstructured Volume Rendering for the Earth Simulator", Parallel Computing, Vol. 29, No. 3, 355-371, 2003...._li chen发表文章

Postman教程——发送第一个请求_使用postman发送第一个请求-程序员宅基地

文章浏览阅读1k次。系列文章首发平台为果冻想个人博客。果冻想,是一个原创技术文章分享网站。在这里果冻会分享他的技术心得,技术得失,技术人生。我在果冻想等待你,也希望你能和我分享你的技术得与失,期待。前言过年在家,闲来无事,正好我们小组年前一直都在使用Postman这个工具,很多新来的小伙伴很多时候都不能正确的使用Postman这个工具,或者说不能高效率的使用Postman这个工具。为了普及一下..._使用postman发送第一个请求

随便推点

Windows API SHGetSpecialFolderPath的用法 ,获取特殊文件夹_shgetspecialfolderpath 可否用户xp系统-程序员宅基地

文章浏览阅读3.8k次。BOOL SHGetSpecialFolderPath ( HWND hwndOwner, LPTSTR lpszPath, int nFolder, BOOL fCreate);示例: 获得自启动文件夹的路径 TCHAR filePath[MAX_PATH]; ::SHGetSp_shgetspecialfolderpath 可否用户xp系统

Tomcat 5.5-Manager App HOW-TO(翻译了部份,努力中...)-程序员宅基地

文章浏览阅读59次。偶也是学习,不过,觉得每次都是读英文,麻烦,就希望把它翻译成中文,为自己,也为其它想学习的朋友,呵呵.不过,由于内容比较多,可能翻译的时间要多一点,如果有兴趣合作的朋友,可以回复BLOG,留言您想翻译那一段.让我们一起完成该内容.不过,为了增加文档的可阅读性,把阅读当成一种享受,请在翻译的时候遵守以下几点:1).翻译的字体一律用绿色.保证阅读不那么伤眼睛.2).重点标题用红色标明,重点内容用蓝色标..._invalid context path yy was specified

Android的IPC机制 —— BroadcastReceiver的使用_broadcastreceiver 可以创建单例么-程序员宅基地

文章浏览阅读340次。综述  在Android的四大组件中除了ContentProvider能够用于进程间的通信外,还有一个也能够用于进程间的通信,那就是BroadcastReceiver。BroadcastReceiver翻译成中文为广播接收器,既然作为广播接收器,那么必然就有Broadcast。在Android中,Broadcast..._broadcastreceiver 可以创建单例么

行内块级元素的并排问题_两个section平行排列-程序员宅基地

文章浏览阅读1.7k次。1. 在一个长度为400px的section中,存在两个分别为200px的div, 如何并排存放:如图所示:解答:设置最外层的 盒子 word-spacing: -5px, 两个div盒子 inline-box box-sizing: border-box然后:..._两个section平行排列

几种TCP连接中出现RST的情况_rst端口-程序员宅基地

文章浏览阅读3.1k次。目录[-]1 端口未打开2 请求超时3 提前关闭4 在一个已关闭的socket上收到数据总结参考文献:应该没有人会质疑,现在是一个网络时代了。应该不少程序员在编程中需要考虑多机、局域网、广域网的各种问题。所以网络知识也是避免不了学习的。而且笔者一直觉得TCP/IP网络知识在一个程序员知识体系中必需占有一席之地的。在TCP协议中RST表示复位,_rst端口

Vue开发笔记-- 配置resolve映射路径_vue路径映射-程序员宅基地

文章浏览阅读3k次。 在Vue-Cli项目开发中,我们常会引用到文件资源,如果文件路径很长,使用起来很不方便,且代码看着不美观。例如:引用图片时,每次都要在图片路径前面加" ../../../assets/images ”字符串,如果我们不想使用这些字符串就需要配置webpack的resolve了。 打开webpack配置文件:在bulid文件夹下 找到resolve属性。..._vue路径映射

推荐文章

热门文章

相关标签