創(chuàng)建protocol
,如下
protocol ZLTextFieldDelegate:class {
func didEndEditing(_ textField:ZLTextField)
}
聲明delegate
屬性,如下
weak var delegate:ZLTextFieldDelegate?
進(jìn)行事件的代理
@objc func click() {
delegate?.didEndEditing!(self)
}
說明,protocol
繼承自class
是為了在下面能用weak
來修飾delegate
,防止循環(huán)引用。
如果要想實(shí)現(xiàn)代理方法的optional
化,可以做如下操作
@objc protocol ZLTextFieldDelegate:class {
@objc optional func didEndEditing(_ textField:ZLTextField)
}
這樣在你引入ZLTextFieldDelegate
而沒有實(shí)現(xiàn)代理方法后也不會報錯。
全部的效果如下圖,
dee491759ced66ff36c8c792536ffee5_4011737698259131989.gif