[IOS]优化UIButton的点击事件

调用方法

but.addClickEvent(click: { (but) in
                print("点击事件")
            })

添加扩展方法


typealias butAction = (UIButton)->()
extension UIButton{
    
    private struct butKeys{
        static var action = "click"
    }
    
    @objc dynamic var click: butAction? {
        set{
            objc_setAssociatedObject(self,&butKeys.action, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_COPY)
        }
        get{
            if let action = objc_getAssociatedObject(self, &butKeys.action) as? butAction{
                return action
            }
            return nil
        }
    }
    
    func addClickEvent(click:@escaping  butAction) {
        self.click = click
        self.addTarget(self, action: #selector(touchUpInSideFun), for: UIButton.Event.touchUpInside)
        
    }
    
    @objc func touchUpInSideFun(but: UIButton) {
        if let click = self.click {
            click(but)
        }
    }
}

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