iOS 防止按钮快速点击造成多次响应的避免方法

有时候有些操作是防止用户在一次响应结束中再响应下一个。但有些测试用户就要猛点,狂点。像这种恶意就要进行防止。

当然有些异步操作时,可以在调用前enable 掉。等CallBACK 后再enable起来。过程中按钮是不能点的。

1、可以使用:

- (void) timeEnough

{

UIButton *btn=(UIButton*)[self.view viewWithTag:33];

btn.selected=NO;

[timer invalidate];

timer=nil;

}

- (void) btnDone:(UIButton*)btn

{

if(btn.selected) return;

btn.selected=YES;

[self performSelector:@selector(timeEnough) withObject:nil afterDelay:3.0]; //使用延时进行限制。

//to do something.

2、个人觉得这种方法更为好用些。

- (void)todoSomething:(id)sender

{

//在这里做按钮的想做的事情。

}

- (void)starButtonClicked:(id)sender

{

//先将未到时间执行前的任务取消。

[[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(todoSomething:) object:sender];

[self performSelector:@selector(todoSomething:) withObject:sender afterDelay:0.2f];

}

对于第二种方法,快速点击N次,只要每次间隔在0.2秒内的都不响应操作,等到停下点击到达0.2秒后再执行。所以按照自己的需要设置响应时间,狂点吧,只响应一次。

iOS 防止按钮快速点击造成多次响应的避免方法

时间: 2024-10-13 12:22:02

iOS 防止按钮快速点击造成多次响应的避免方法的相关文章

ios 防止按钮快速点击造成多次响应的避免方法。

- (void)starButtonClicked:(id)sender { //先将未到时间执行前的任务取消. [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(todoSomething:) object:sender]; [self performSelector:@selector(todoSomething:) withObject:sender afterDelay:0.2f];

在iOS中,实现点击搜索结果隐藏搜索结果的方法。

不知道有没有别的什么的好的方法,最近在实现一个需求(点击搜索,然后输入搜索内容,显示搜索出来的结果,然后点击搜索结果,在当前页面显示所点击的结果的详细的信息).遇到的问题是,点击搜索结果的时候,搜索的结果不隐藏,那么你就看不到被它挡着的东西了. 解决办法是 for (id view in subViews) { if ([view isKindOfClass:[UIButton class]]) { UIButton *cancelButton = (UIButton *)view; [canc

避免按钮快速点击造成的多次响应的避免方法

1.可以使用定时器进行延迟. - (void) timeEnough { UIButton *btn=(UIButton*)[self.view viewWithTag:33]; btn.selected=NO; [timer invalidate]; timer=nil; } - (void) btnDone:(UIButton*)btn { if(btn.selected) return; btn.selected=YES; [self performSelector:@selector(t

iOS 在tableView上添加button导致按钮没有点击效果和不能滑动的问题

[原]iOS 在tableView上添加button导致按钮没有点击效果和不能滑动的问题 2014-10-31阅读202 评论0 转载请注明出处. 今天在调试代码的时候,在tableviewcell上添加button,发现button快速点击的话,是看不出点击效果的,查找资料发现, ios7上UITableViewCell子层容器是UITableViewCellScrollView, ios6的则是UITableViewCellContentView.点击效果应该是被ScrollView的触摸延

iOS中防止两个按钮同时点击的方法

在iOS开发中通常会遇到,两个靠的很近的按钮,一不小心两个按钮同时点击了. 神奇的bug就产生了,如果两个按钮事件都是跳转页面的话,就会出现连跳两个页面的情况. 通常解决此问题的方法是:定义一个BaseViewController. 设置一个方法setExclusiveTouchForButtons:(UIView *)myView -(void)setExclusiveTouchForButtons:(UIView *)myView { for (UIView * v in [myView s

iOS高级开发——CollectionView的cell中按钮的点击实现

在我刚初学iOS的时候,我就问一些大神,iOS开发中最难的哪些部分.有些人就说是自定义控件.UI和交互设计.那个时候我将信将疑,随着自己开发的深入,自己的确是深有体会.开发一款App产品,很大一部分时间是在和UI打交道.因为开发中很多功能是直接封装好的或者有现成模板可以用的,唯有UI是根据不同的App千变万化的.所以今天我们继续来研究iOS中比较高级的控件--UICollectionView,来实现cell中按钮的点击操作.该demo我已经提交到: https://github.com/chen

ios开发-UI基础-应用管理(单纯界面)改进5-使用代理实现监听下载按钮的点击(delegate)

[注意]转载时请注明出处博客园-吃唐僧肉的小悟空http://www.cnblogs.com/hukezhu/ 前几篇文章介绍了一个应用管理的小应用,从最开始的单纯实现功能,一步一步就行改进\封装,上篇文章是使用xib进行了优化,本篇文章使用代理实现监听下载按钮的点击. 在原来的基础上,使用代理的主要思路分析: 首先要新建一个协议 声明协议的要实现的方法(一般为optional) 声明一个遵守该协议的代理的属性 使用代理,通知其代理完成操作 在代理中的实现步骤: 遵守协议 设置代理(一般通过拖线

iOS解决按钮短时间内多次点击只触发一次事件方法

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

iOS并排按钮点击联动效果封装

#import <UIKit/UIKit.h> typedef void(^SelectedBlock)(id viewPager, NSInteger index); @interface YFViewPager : UIView<UIScrollViewDelegate> { NSArray *_titleArray; /**< 菜单标题 */ NSArray *_views; /**< 视图 */ NSArray *_titleIconsArray; /**<