zoukankan      html  css  js  c++  java
  • 把UIGestureRecognizer 中的点击事件变成Block

    //
    //  UIGestureRecognizer+Block.h
    //  rrefwvenfo
    //
    //  Created by 张凯泽 on 16/4/11.
    //  Copyright © 2016年 rytong_zkz. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    typedef void(^NVMGertureBlock)(id gesture);
    @interface UIGestureRecognizer (Block)
    +(instancetype)nvm_gestureRecongnizerWithActionBlock:(NVMGertureBlock)Block;
    -(instancetype)initWithActionBlock:(NVMGertureBlock)Block;
    @end
    //
    //  UIGestureRecognizer+Block.m
    //  rrefwvenfo
    //
    //  Created by 张凯泽 on 16/4/11.
    //  Copyright © 2016年 rytong_zkz. All rights reserved.
    //
    #import <objc/message.h>
    #import "UIGestureRecognizer+Block.h"
    
    
    static const int target_key;
    @implementation UIGestureRecognizer (Block)
    +(instancetype)nvm_gestureRecongnizerWithActionBlock:(NVMGertureBlock)Block
    {
        return [[self alloc]initWithActionBlock:Block];
    }
    -(instancetype)initWithActionBlock:(NVMGertureBlock)Block
    {
        self = [self init];
        [self addActionBlock:Block];
        [self addTarget:self action:@selector(invoke:)];
        return self;
        
    }
    -(void)addActionBlock:(NVMGertureBlock)block
    {
        if (block) {
            objc_setAssociatedObject(self, &target_key, block, OBJC_ASSOCIATION_COPY_NONATOMIC);
        }
    }
    -(void)invoke:(id)sender
    {
        NVMGertureBlock block = objc_getAssociatedObject(self, &target_key);
        if (block) {
            block(sender);
        }
    }
    @end
  • 相关阅读:
    九连环
    杨辉三角
    魔术师发牌问题(循环链表)
    Linux 技巧:让进程在后台可靠运行的几种方法
    博客新地址
    x&(-x)取x的最后一个1的证明
    c++对象模型布局分析
    c++ 子类要正确的调用父类构造函数
    hibernate ID 生成方式
    IOCP
  • 原文地址:https://www.cnblogs.com/zkzzkz/p/5377327.html
Copyright © 2011-2022 走看看