Skip to content

Instantly share code, notes, and snippets.

@KittenYang
Last active June 16, 2019 01:46
Show Gist options
  • Save KittenYang/1dc93bbb07c5d97facea806fec3dcf44 to your computer and use it in GitHub Desktop.
Save KittenYang/1dc93bbb07c5d97facea806fec3dcf44 to your computer and use it in GitHub Desktop.
使用 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
@wendf
Copy link

wendf commented Jul 12, 2016

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

@devfalme
Copy link

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

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