ios 限制UIButton点击频率
来源:互联网 发布:流体力学软件fluent 编辑:程序博客网 时间:2024/05/16 12:52
在项目中常常会遇到这样的问题:
button点击就会触发相应的点击事件,比如说是向向服务器发送网络请求或者弹出弹框。
网上一般无非3种方法
1、控制button的enabled属性可用不可用 缺点用户体验效果不好容,易遗忘
2、runtime hook一下 缺点全局button生效,性能代价太大
3、[self performSelector:@selector(timeEnough:) withObject:nil afterDelay:3.0]; 缺点太繁琐代码过多
这里提供第4中解决方案:自定义一个控制频繁点击限制的button
1、继承UIButton
2、定义一个点击代理方法
3、重写-(void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event方法
4、与ViewController做属性连线,(不要做action连线)然后设置代理,并且[self.noDoubleBtn addTarget:self action:@selector(null) forControlEvents:UIControlEventTouchUpInside];
代码如下:
#import <UIKit/UIKit.h>
@protocol NoDoubleButtonDelegate <NSObject>
- (void) BtnClick:(UIButton *)btn;
@end
@interface NoDoubleButton : UIButton
@property(weak , nonatomic) id<NoDoubleButtonDelegate> delegate;
@end
#import "NoDoubleButton.h"
BOOL hasLiked = YES;
@implementation NoDoubleButton
-(void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event{
if (hasLiked) { // 点击的时候判断hasLiked
hasLiked = NO;// 执行弹框前设置
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
hasLiked = YES; //弹框完成后延时2秒在设置
});
if(self.delegate != NULL){
[self.delegate BtnClick:self];
}
}
}
@end
- (void)viewDidLoad
{
[super viewDidLoad];
self.noDoubleBtn.delegate = self;
self.noDoubleBtnTwo.delegate = self;
[self.noDoubleBtn addTarget:self action:@selector(null) forControlEvents:UIControlEventTouchUpInside];
[self.noDoubleBtnTwo addTarget:self action:@selector(null) forControlEvents:UIControlEventTouchUpInside];
}
- (void) BtnClick:(UIButton *)btn{
if(btn.tag == 0){
NSLog(@"aaaa");
}
if(btn.tag == 1){
NSLog(@"bbbb");
}
}
- ios 限制UIButton点击频率
- iOS怎么限制按钮点击频率
- ios--点击UIButton切换图片
- 【iOS】点击UIButton,弹出UIPickerView
- ios UIButton点击事件(@selector)注意事项
- iOS 点击UIButton切换数组元素
- iOS UIButton 点击事件带多参数
- iOS 扩大 UIButton 的点击范围
- iOS扩大按钮UIButton的点击范围
- iOS 修改UIButton的点击范围
- iOS runtime扩大UIButton点击范围
- iOS 为UIButton扩大点击响应区域
- iOS 防止UIButton按钮重复点击
- iOS之使用Runtime解决UIButton多次点击(重复点击)
- ios 控制button点击事件的触发频率
- ios UIButton的点击与松开事件处理
- ios开发之UIButton 点击两张图标转换
- IOS开发 解决UIButton点击事件不识别
- LitJSON之JSON与对象间的相互映射
- [LeetCode] 77. Combinations
- java中最常用jar包
- 【dp专题1】hdu1087最大上升子段和 E
- 119. Pascal's Triangle II
- ios 限制UIButton点击频率
- C++类型转换操作符---补充(8)《Effective C++》
- extends 继承
- extjs4 grid合并列和合并行
- 【并查集】OJ_0003 A Bug
- Lotto
- AmazeUI图片轮播
- Android中日历读写操作
- SVN忘记密码