     public typealias TabNavigationItemViewsInfo = (index: Int, navigationItemViews: TabNavigationBar.TabNavigationItemViews?)
 }
 
+private func _createGeneralPagingScrollView() -> UIScrollView {
+    let scrollView = UIScrollView()
+    scrollView.translatesAutoresizingMaskIntoConstraints = false
+    scrollView.showsVerticalScrollIndicator = false
+    scrollView.showsHorizontalScrollIndicator = false
+    scrollView.backgroundColor = UIColor.clear
+    scrollView.decelerationRate = UIScrollViewDecelerationRateFast
+    scrollView.isPagingEnabled = true
+    return scrollView
+}
+
 class TabNavigationController: ViewController {
     /// Tab navigation bar of the tab-navigation controller.
     public var tabNavigationBar: TabNavigationBar { return _tabNavigationBar }


extension TabNavigationController: TabNavigationBarDelegate {
    func tabNavigationBar(_ tabNavigationBar: TabNavigationBar, didSelectTitleItemAt index: Int) {
        guard index >= childViewControllers.startIndex && index < childViewControllers.endIndex else {
            return
        }
        
        let _selectedViewController = childViewControllers[index]
        
        _contentScrollView.scrollRectToVisible(_selectedViewController.view.frame, animated: true)
        

    private func _commitTransitionNavigationItemViews(at index: Int) {
        if let info = _transitionNavigationItemViewsInfo {
            if info.index == index {
                let viewController = _viewControllersStack[0][index]
                tabNavigationBar.commitTransitionNavigatiomItemViews(info.navigationItemViews, navigationItems: viewController.tabNavigationItems, success: true)
            } else {
                tabNavigationBar.commitTransitionNavigatiomItemViews(info.navigationItemViews, navigationItems: [], success: false)
