给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
本文介绍了一种在iOS开发中为UIView添加Tap手势的方法。通过创建一个类别UIView+SKTap,实现了自定义TapBlock属性及添加Tap手势的功能。具体实现包括设置TapBlock,添加Tap手势并执行回调。
199

被折叠的 条评论
为什么被折叠?



