         guard abs(translationX) > 5 else {
           return
         }
-        
-        tabBar.cancelLineTransition(isAnimated: false)
-        MotionTransition.shared.cancel(isAnimated: false)
+
+        if targetIndex != -1 {
+          delegate?.tabsController?(tabsController: self, willCancelSelecting: viewControllers[targetIndex])
+          tabBar.cancelLineTransition(isAnimated: false)
+          MotionTransition.shared.cancel(isAnimated: false)
+        }
         
         if internalSelect(at: nextIndex, isTriggeredByUserInteraction: true, selectTabItem: false)  {
           tabBar.startLineTransition(for: nextIndex, duration: 0.35)

      }
      
    default:
      let progress = (translationX + velocityX) / view.bounds.width
      
      let isUserHandDirectionLeft = progress < 0

      } else {
        tabBar.cancelLineTransition()
        MotionTransition.shared.cancel()
        delegate?.tabsController?(tabsController: self, willCancelSelecting: viewControllers[targetIndex])
      }
      targetIndex = -1
    }
