     
     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
     }
 }
 

}

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

        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);
    }
    
