類目:將TapGesture封裝成一個(gè)block

上代碼.h文件

#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
typedef void(^MyTapGestureRecognizerBlock)();
@interface UIView (TapGestureRecognize)
/**
 *  可用來(lái)重新設(shè)置點(diǎn)擊事件的方法
 */
@property (nonatomic, copy) MyTapGestureRecognizerBlock gestureBlock;
/**
 *  給視圖添加一個(gè)點(diǎn)擊事件
 *  @param action 實(shí)現(xiàn)點(diǎn)擊事件的方法
 */
- (void)addGestureRecognizerAtction:(MyTapGestureRecognizerBlock __nonnull)action;
@end
NS_ASSUME_NONNULL_END

.m文件

#import "UIView+TapGestureRecognize.h"
#import <objc/runtime.h>
#import <objc/message.h>

@implementation UIView (TapGestureRecognize)

#pragma mark - 動(dòng)態(tài)生成屬性
static char gestureBlockKey;
@dynamic gestureBlock;

- (void)setGestureBlock:(MyTapGestureRecognizerBlock)gestureBlock {
    objc_setAssociatedObject(self, &gestureBlockKey, gestureBlock, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
- (MyTapGestureRecognizerBlock)gestureBlock {
    return objc_getAssociatedObject(self, &gestureBlockKey);
}

#pragma mark - 實(shí)現(xiàn)功能方法
- (void)addGestureRecognizerAtction:(MyTapGestureRecognizerBlock)action {
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleMyTapGestureRecognizer)];
    [self addGestureRecognizer:tap];
    self.gestureBlock = action;
    self.userInteractionEnabled = YES;
}

- (void)handleMyTapGestureRecognizer {
    static double preClickTime = -1;
    double curClickTime = [[NSDate date] timeIntervalSince1970];
    if ((curClickTime - preClickTime) > 0.2) {
        self.gestureBlock();
    }
    preClickTime = curClickTime;
}
@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ## 可重入函數(shù) ### 可重入性的理解 若一個(gè)程序或子程序可以安全的被并行執(zhí)行,則稱其為可重入的;即當(dāng)該子程序正...
    夏至亦韻閱讀 812評(píng)論 0 0
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語(yǔ)言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲(chóng)de夢(mèng)閱讀 100,708評(píng)論 9 468
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 7,336評(píng)論 0 17
  • 參考:Markdown 語(yǔ)法說(shuō)明 (簡(jiǎn)體中文版)原文不方便查詢,簡(jiǎn)化了一些圖片和語(yǔ)言先是看的簡(jiǎn)版,太啰嗦了,說(shuō)了那...
    尚濤易捷北京閱讀 399評(píng)論 0 0
  • 要不是荒草豎碑給你 一切都會(huì)隨風(fēng)變好 海嘯微笑白雪落大地 不折不撓愛(ài)一生鬧 要不是命運(yùn)徒增分離 條條海船穿越火炮 ...
    特梅徒閱讀 295評(píng)論 0 0

友情鏈接更多精彩內(nèi)容