123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import Foundation
- public class ActionClosure {
-
- public let selector : Selector
- private let closure : (_ sendersender: Any?) -> ()
-
- init(_ attachObj: AnyObject, closure: @escaping (_ sender: Any?) -> ()) {
- self.closure = closure
- self.selector = #selector(target(_ :))
- objc_setAssociatedObject(attachObj, UUID().uuidString, self, .OBJC_ASSOCIATION_RETAIN)
- }
-
- @objc func target(_ sender: Any?) {
- closure(sender)
- }
- }
- public extension UIControl {
- func action(for event: UIControl.Event, _ closure : @escaping (_ object: Any?) -> Void) {
- let actionClosure = ActionClosure(self, closure: closure)
- self.addTarget(actionClosure, action: actionClosure.selector, for: event)
- }
- }
|