Initial commit
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// UIControl+YT.m
|
||||
// CollectionViewTest
|
||||
//
|
||||
// Created by imac on 17/3/1.
|
||||
// Copyright © 2017年 xiang. All rights reserved.
|
||||
//
|
||||
|
||||
#import "UIControl+YT.h"
|
||||
#import <objc/runtime.h>
|
||||
@implementation UIControl (YT)
|
||||
|
||||
static const char *UIControl_acceptEventInterval = "UIControl_acceptEventInterval";
|
||||
|
||||
static const char *UIcontrol_ignoreEvent = "UIcontrol_ignoreEvent";
|
||||
|
||||
- (NSTimeInterval)yt_acceptEventInterval {
|
||||
|
||||
return [objc_getAssociatedObject(self, UIControl_acceptEventInterval) doubleValue];
|
||||
|
||||
}
|
||||
|
||||
- (void)setYt_acceptEventInterval:(NSTimeInterval)yt_acceptEventInterval {
|
||||
|
||||
objc_setAssociatedObject(self, UIControl_acceptEventInterval, @(yt_acceptEventInterval), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||
|
||||
}
|
||||
|
||||
- (BOOL)yt_ignoreEvent {
|
||||
|
||||
return [objc_getAssociatedObject(self, UIcontrol_ignoreEvent) boolValue];
|
||||
|
||||
}
|
||||
|
||||
- (void)setYt_ignoreEvent:(BOOL)yt_ignoreEvent {
|
||||
|
||||
objc_setAssociatedObject(self, UIcontrol_ignoreEvent, @(yt_ignoreEvent), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||
|
||||
}
|
||||
|
||||
+ (void)load {
|
||||
|
||||
Method a = class_getInstanceMethod(self, @selector(sendAction:to:forEvent:));
|
||||
|
||||
Method b = class_getInstanceMethod(self, @selector(__yt_sendAction:to:forEvent:));
|
||||
|
||||
method_exchangeImplementations(a, b);
|
||||
|
||||
}
|
||||
|
||||
- (void)__yt_sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event {
|
||||
|
||||
if (self.yt_ignoreEvent) return;
|
||||
|
||||
if (self.yt_acceptEventInterval > 0) {
|
||||
|
||||
self.yt_ignoreEvent = YES;
|
||||
|
||||
[self performSelector:@selector(setYt_ignoreEvent:) withObject:@(NO) afterDelay:self.yt_acceptEventInterval];
|
||||
|
||||
}
|
||||
|
||||
[self __yt_sendAction:action to:target forEvent:event];
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user