博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS解决按钮短时间内多次点击只触发一次事件方法
阅读量:5109 次
发布时间:2019-06-13

本文共 950 字,大约阅读时间需要 3 分钟。

在上家公司做项目的时候,做了个60秒获取验证码的功能,当时做了个定时器,按钮触发定时器,逻辑来讲都是没问题的,但是实际操作的时候,恶意的在短时间内多次点击那个获取验证码按钮,按钮的点击事件被调用了多次,定时器从而也调用多次,本来一秒减一的事件变成了一秒减多,并且减到0后继续调用方法,直到响应点击次数调用完,这完全不符合我们的心意。 时隔2月,我在新公司工作了,回头来看这个问题,为了解决这个问题,我在百度上查了许多资料,解决后将解决办法写入自己的博客,和大家分享自己的技术,也为自己一直想写博客做个开始,记录开发中遇到的问题,慢慢成长。

好了,废话讲完,开始进入主题: 1.一个60秒获取验证码的功能,先写好了按钮,在触发按钮的方法中做如下操作:

-(void)getBtnAction:(UIButton *)btn{ //获取验证码按钮点击

// 在0.2秒时间间隔内多次点击只响应一次点击事件, todoSomething就是我们具体要实现的方法

[[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(todoSomething:) object:btn]; [self performSelector:@selector(todoSomething:) withObject:btn afterDelay:0.2f]; }

-(void)todoSomething:(UIButton *)btn{

//这里面写timer,timer调自己的方法

}

2.到这里就结束了,关键的就那一步:

[[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(todoSomething:) object:btn]; [self performSelector:@selector(todoSomething:) withObject:btn afterDelay:0.2f];

希望对大家有所帮助。

转载于:https://www.cnblogs.com/jingjin/p/6439693.html

你可能感兴趣的文章
JSP的3种方式实现radio ,checkBox,select的默认选择值
查看>>
Linux操作系统 和 Windows操作系统 的区别
查看>>
《QQ欢乐斗地主》山寨版
查看>>
文件流的使用以及序列化和反序列化的方法使用
查看>>
Android-多线程AsyncTask
查看>>
第一个Spring冲刺周期团队进展报告
查看>>
C++函数基础知识
查看>>
红黑树 c++ 实现
查看>>
Android 获取网络链接类型
查看>>
报表服务框架:WEB前端UI
查看>>
java自学基础、项目实战网站推荐
查看>>
软件包的使用
查看>>
linux中启动与终止lnmp的脚本
查看>>
gdb中信号的处理[转]
查看>>
学习Javascript闭包(Closure)
查看>>
LeetCode【709. 转换成小写字母】
查看>>
如何在Access2007中使用日期类型查询数据
查看>>
Jzoj4757 树上摩托
查看>>
CF992E Nastya and King-Shamans(线段树二分+思维)
查看>>
基于docker的spark-hadoop分布式集群之一: 环境搭建
查看>>