iOS Button快捷处理点击事件 与View快捷处理添加单击手势(二)

上篇讲了Button的快捷处理点击事件,有没看过的朋友可以过去看一下
iOS Button快捷处理点击事件 与View快捷处理添加手势(一)
这一篇主要给大家分享一下快捷处理View手势点击事件,通常我们在view上添加手势是这样的(假如给TapView添加手势,我们得这样写):

  let tapView = UIView()
        self.addSubview(tapView)
        let tapGes = UITapGestureRecognizer.init(target: self, action:#selector(tapAction))
        tapView.addGestureRecognizer(tapGes)

 func tapAction(){
        //点击操作
    }

既要添加视图还要添加手势,最后还要写一个响应手势的方法,极不方便,如果我们能把所有的整合到一块,减少代码量,还是蛮舒服的,就像这样:

 let tapView = UIView()
        tapView.addGesClosure { 
            //点击操作
        }
        self.addSubview(tapView)

上面所有关于添加单击手势的就被整合成一句代码,希望能帮到感兴趣的朋友,其实原理和上篇button是一样,代码贴出来分享给大家,这次的就只有Swift版了,OC的大家自己对照写一下吧,自己建一个Swift文件,复制一下代码就好了


import Foundation
import UIKit

public extension UITapGestureRecognizer{
    private struct AssociatedKeys{
        static var buttonTouch  = "buttonTouch"
    }
    
    
    typealias TouchedClosure = ()->Void
    
  public  func addTouchClosure(closure:TouchedClosure?) {
        objc_setAssociatedObject(self,&AssociatedKeys.buttonTouch,closure,.OBJC_ASSOCIATION_COPY_NONATOMIC)
        self.addTarget(self, action: #selector(actionTouch))
    }
 @objc private  func actionTouch(){
        if let closure:TouchedClosure = objc_getAssociatedObject(self,&AssociatedKeys.buttonTouch) as? UITapGestureRecognizer.TouchedClosure{
            closure()
        }
        
    }
}
extension UIView {
 func addGesClosure(closure:GesAddClosure?){
        self.isUserInteractionEnabled = true
        let ges = UITapGestureRecognizer()
        ges.addTouchClosure { 
            closure!()
        }
        self.addGestureRecognizer(ges)
          }

}

一些小东西,希望能帮助到大家

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,245评论 4 61
  • 寄希望于时间,是一种自欺欺人的软弱
    longbridge阅读 384评论 0 0
  • 我一直认为,只要自己在教育上注重引导,把孩子引向积极、乐观、正面的一面,那便是最好的。却从来不晓得,自己平日里的情...
    向着太阳奔跑的石头阅读 184评论 0 0
  • 2017年4月26日,在吕梁市交警支队和方山县教育局的组织下,方山县300余名师生参加了“4.30交通反思日学生安...
    恋蕊阅读 744评论 0 1
  • 汜水街啊汜水街,那是我曾经住过的地方。 那里有朴实的民房,电线像一张星罗棋布的网一般,将这个不大的城镇的每一个脉络...
    慢热的罗氏君阅读 953评论 3 8