swift闭包(以view tap事件为例)
2018-04-03 本文已影响6人
sky_fighting
view添加tap事件步骤一:创建继承UIView的类AFView,并声明一个带参,返回值为空的闭包
typealias clickViewEvent = (_ sender: UIView)->()
步骤二:声明私有属性clickEvent,类型为步骤一声明的clickViewEvent
private var clickEvent: clickViewEvent?
步骤三:声明一个实例方法,参数为闭包类型,代码如下,属性赋值,并且给view添加tap事件
func clickView(action: clickViewEvent?) {
clickEvent = action
let tap = UITapGestureRecognizer(target: self, action: #selector(clickViewEvent(sender:)))
self.addGestureRecognizer(tap)
}
步骤四:实现view的tap事件
@objc private func clickViewEvent(sender:UITapGestureRecognizer){
guard let block = clickEvent else { return } //判断闭包是否为空
block(sender.view!) //回调---参数为view
}
如下图所示:
view tap事件的使用步骤五:创建view,并使用点击事件