     return bar
 }
 
+private func _createGeneralAlignmentView<T>() -> T where T: UIView {
+    let view = T()
+    view.translatesAutoresizingMaskIntoConstraints = false
+    view.backgroundColor = .clear
+    view.clipsToBounds = true
+    view.isUserInteractionEnabled = false
+    return view
+}
+
+extension TabNavigationController {
+    fileprivate class _TabNavigationKeyboardAlignmentLayoutView: UIView { }
+}
+
+extension TabNavigationController._TabNavigationKeyboardAlignmentLayoutView: UILayoutSupport {
+    var length: CGFloat { return bounds.height }
+}
+
 public class TabNavigationController: UIViewController {
     /// Tab navigation bar of the tab-navigation controller.
     public var tabNavigationBar: TabNavigationBar { return _tabNavigationBar }

    }
}

extension ViewController {
    override func removeFromParentViewController() {
        super.removeFromParentViewController()

        view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[_contentScrollView]|", options: [], metrics: nil, views: ["_contentScrollView":_contentScrollView]))
        _contentScrollView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
        _contentScrollView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
    }
    
    private func _setupKeyboardAlignmentView() {
        view.insertSubview(_keyboardAlignmentView, belowSubview: _contentScrollView)
        _keyboardAlignmentView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
        _keyboardAlignmentView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
        _keyboardAlignmentView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    }
    
    private func _transitionTabNavigationBarWithPercent(_ perecent: CGFloat, transition views: TabNavigationBar.TabNavigationTransitionContext?) {
