             return
         }
         _commitTransitionNavigationItemViews(at: Int(scrollView.contentOffset.x / scrollView.bounds.width))
-        _endsRootViewControllersAppearanceTransitionIfNeccessary()
+        _endsRootViewControllersAppearanceTransitionIfNecessary()
     }
     
     public func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
         let selectedIndex = Int(targetContentOffset[0].x / scrollView.bounds.width)
+        _endsRootViewControllersInteractiveTransitionIfNecessary(at: selectedIndex)
         _beginsRootViewControllersAppearanceTransition(at: selectedIndex, updateNavigationItems: false, animated: true)
     }
     

        _rootViewControllersContext.selectedIndex = index
    }
    
    fileprivate func _endsRootViewControllersAppearanceTransitionIfNeccessary() {
        guard !_endingAppearanceViewControllers.isEmpty else { return }
        
        _endingAppearanceViewControllers.forEach { $0.endAppearanceTransition() }
        _endingAppearanceViewControllers.removeAll()
    }
}


extension TabNavigationController: UIScrollViewDelegate {
    public func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
        if scrollView.isDecelerating {
            _endsRootViewControllersAppearanceTransitionIfNecessary()
        }
        _beginsRootViewControllersInteractiveTransition()
    }
    
    public func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
