给UIView 做一个延展
//
// UIView+SKTap.h
// MeiGouYouPin
//
// Created by coder on 2019/10/29.
// Copyright © 2019 AlexanderYeah. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
typedef void(^TapBlock)(void);
@interface UIView (SKTap)
@property (copy,nonatomic)TapBlock TapBlk;
- (void)sk_addTap:(TapBlock)block;
@end
NS_ASSUME_NONNULL_END
//
// UIView+SKTap.m
// MeiGouYouPin
//
// Created by coder on 2019/10/29.
// Copyright © 2019 AlexanderYeah. All rights reserved.
//
#import “UIView+SKTap.h”
#import <objc/runtime.h>
const char *blockKey = “blk”;
@implementation UIView (SKTap)
-
(void)setTapBlock:(TapBlock)tapBlock {
objc_setAssociatedObject(self, &blockKey, tapBlock, OBJC_ASSOCIATION_COPY_NONATOMIC);
} -
(TapBlock)tapBlock {
return objc_getAssociatedObject(self, &blockKey);
} -
(void)sk_addTap:(TapBlock)block
{self.tapBlock = block; // 把block赋值给self.tapBlock, 可以在当前函数之外执行该回调
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGes)];
[self addGestureRecognizer:tap];
} -
(void)tapGes {
if (self.tapBlock) {
self.tapBlock(); // 执行回调
}
}
@end