上篇講了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(){
//點擊操作
}
既要添加視圖還要添加手勢待榔,最后還要寫一個響應(yīng)手勢的方法隘梨,極不方便慢味,如果我們能把所有的整合到一塊澈蚌,減少代碼量,還是蠻舒服的日月,就像這樣:
let tapView = UIView()
tapView.addGesClosure {
//點擊操作
}
self.addSubview(tapView)
上面所有關(guān)于添加單擊手勢的就被整合成一句代碼袱瓮,希望能幫到感興趣的朋友,其實原理和上篇button是一樣爱咬,代碼貼出來分享給大家尺借,這次的就只有Swift版了,OC的大家自己對照寫一下吧精拟,自己建一個Swift文件燎斩,復(fù)制一下代碼就好了
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)
}
}
一些小東西虱歪,希望能幫助到大家