類目:將TapGesture封裝成一個block

上代碼.h文件

#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
typedef void(^MyTapGestureRecognizerBlock)();
@interface UIView (TapGestureRecognize)
/**
 *  可用來重新設置點擊事件的方法
 */
@property (nonatomic, copy) MyTapGestureRecognizerBlock gestureBlock;
/**
 *  給視圖添加一個點擊事件
 *  @param action 實現點擊事件的方法
 */
- (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 - 動態生成屬性
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 - 實現功能方法
- (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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

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