 
     // MARK: configure
 
-    fileprivate func addActions() {
-        addTarget(self, action: #selector(CircleMenu.onTap), for: UIControlEvents.touchUpInside)
+    fileprivate func addActions(newEvent: UIControlEvents, oldEvent: UIControlEvents? = nil) {
+        if let oldEvent = oldEvent { removeTarget(self, action: #selector(CircleMenu.onTap), for: oldEvent) }
+        addTarget(self, action: #selector(CircleMenu.onTap), for: newEvent)
     }
 
     // MARK: actions
+    
+    private var isBounceAnimating: Bool = false
 
     @objc func onTap() {
+        guard isBounceAnimating == false else { return }
+        isBounceAnimating = true
+
         if buttonsIsShown() == false {
             let platform = createPlatform()
             buttons = createButtons(platform: platform)

    
    // Pop buttons radius, if nil use center button size
    open var subButtonsRadius: CGFloat?

    /// The object that acts as the delegate of the circle menu.
    @IBOutlet open var delegate: AnyObject? // CircleMenuDelegate?


        buttonsAnimationIsShow(isShow: false, duration: duration, hideDelay: hideDelay)

        tapBounceAnimation(duration: 0.5)
        tapRotatedAnimation(0.3, isSelected: false)
    }

