         let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(onTapRecognized(_:)))
         addGestureRecognizer(tapGestureRecognizer)
         let attachedClosureWrapper = OnClickClosureWrapper(closure: onClickClosure)
+        tapGestureRecognizer.delegate = attachedClosureWrapper
         objc_setAssociatedObject(self, &OnClickClosureWrapper.onClickClosureProperty, attachedClosureWrapper, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN);
     }
     

}

// Wrapper to save closure into a property
class OnClickClosureWrapper {
    typealias TapRecognizedClosure = (tapGestureRecognizer: UITapGestureRecognizer) -> ()
    static var onClickClosureProperty = "onClickClosureProperty"
    

    
    init(closure: TapRecognizedClosure) {
        self.closure = closure
    }

    @objc func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return false
    }
}

// Wrapper to save closure into a property
class OnLongPressClosureWrapper: NSObject, UIGestureRecognizerDelegate {
    typealias LongPressRecognizedClosure = (longPressGestureRecognizer: UILongPressGestureRecognizer) -> ()
    static var longPressClosureProperty = "longPressClosureProperty"
    
    let closure: LongPressRecognizedClosure
    
    init(closure: LongPressRecognizedClosure) {
        self.closure = closure
    }
    
    @objc func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return false
    }
}

