Create a gist now

Instantly share code, notes, and snippets.

使用 Block 创建 UIGestureRecognizer
static const int target_key;
@implementation UIGestureRecognizer (Block)
+(instancetype)nvm_gestureRecognizerWithActionBlock:(NVMGestureBlock)block {
return [[self alloc]initWithActionBlock:block];
}
- (instancetype)initWithActionBlock:(NVMGestureBlock)block {
self = [self init];
[self addActionBlock:block];
[self addTarget:self action:@selector(invoke:)];
return self;
}
- (void)addActionBlock:(NVMGestureBlock)block {
if (block) {
objc_setAssociatedObject(self, &target_key, block, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
}
- (void)invoke:(id)sender {
NVMGestureBlock block = objc_getAssociatedObject(self, &target_key);
if (block) {
block(sender);
}
}
@end
@zhaoxiaobao

很实用

@wendf
wendf commented Jul 12, 2016

请问有没有使用的demo啊,我这加了之后一直报错,谢谢

@devfalme

放一下.h可以吗, 自己写了以后不管怎么都不走invoke

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment