概述
在实际开发过程中,由于我们在点击一个button后进行网络请求,然后进行页面的跳转,但是当网络较慢,但是一直连续点击button,造成跳转一个页面多次,虽有通过button的enable可以稍作解决,但是不能根本解决,通过其他人的博客看到一个很好的方法,稍作修改,贡献出来。感谢大家的奉献!!!!
1.自定义一个myButton类继承UIButton
.h文件
#import <UIKit/UIKit.h>
@interface myButton : UIButton
@property(nonatomic,assign) NSTimeInterval uxy_acceptEventInterval;// 可以用这个给重复点击加间隔
@property(nonatomic,assign)BOOL uxy_ignoreEvent;
@end
.m文件
#import "myButton.h"
#import <objc/runtime.h>
@implementation myButton
static const char *UIControl_acceptEventInterval = "UIControl_acceptEventInterval";
- (NSTimeInterval)uxy_acceptEventInterval
{
return [objc_getAssociatedObject(self, UIControl_acceptEventInterval) doubleValue];
}
- (void)setUxy_acceptEventInterval:(NSTimeInterval)uxy_acceptEventInterval
{
objc_setAssociatedObject(self, UIControl_acceptEventInterval,@(uxy_acceptEventInterval),OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
+ (void)load
{
Method a = class_getInstanceMethod(self, @selector(sendAction:to:forEvent:));
Method b = class_getInstanceMethod(self, @selector(__uxy_sendAction:to:forEvent:));
method_exchangeImplementations(a, b);
}
- (void)__uxy_sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event
{
if (self.uxy_ignoreEvent) return;
if (self.uxy_acceptEventInterval > 0)
{
self.uxy_ignoreEvent = YES;
[self performSelector:@selector(setUxy_ignoreEvent:) withObject:@(NO) afterDelay:self.uxy_acceptEventInterval];
}
[self __uxy_sendAction:action to:target forEvent:event];
}
@end
#import "ViewController.h"
#import "myButton.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor =[UIColor whiteColor];
myButton *btn = [[myButton alloc] initWithFrame:CGRectMake(30, 150, 200, 50)];
btn.backgroundColor = [UIColor redColor];
btn.uxy_acceptEventInterval= 1.0;//设置点击的时间间隔
btn.uxy_ignoreEvent = NO;
[btn addTarget:self action:@selector(djfdfj) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
- (void)djfdfj
{
NSDateFormatter *forma = [[NSDateFormatter alloc] init];
[forma setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateStr = [forma stringFromDate:[NSDate date]];
NSLog(@"%@",dateStr);
}
@end
最后
以上就是激昂小蜜蜂为你收集整理的完全解决快速连续多次点击button导致跳转多个界面(注:方法从他人博客中看到,稍作修改)的全部内容,希望文章能够帮你解决完全解决快速连续多次点击button导致跳转多个界面(注:方法从他人博客中看到,稍作修改)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复