     
     /// The `NSLayoutConstraintSet` that holds the `inputAccessoryView` to the bottom if its superview
     private var constraints: NSLayoutConstraintSet?
+
+    /// The height of the tab bar passed into `.bind(inputAccessoryView:usingTabBar)` that's used when deciding the y position of the accessory view
+    private var tabBarHeight: CGFloat?
     
     /// A weak reference to a `UIScrollView` that has been attached for interactive keyboard dismissal
     private weak var scrollView: UIScrollView?

        frame.origin.y = max(absoluteLocation.y, window.bounds.height - frame.height)
        frame.size.height = window.bounds.height - frame.origin.y
        keyboardNotification.endFrame = frame
        callbacks[.willChangeFrame]?(keyboardNotification)
    }
    
    /// Only receive a `UITouch` event when the `scrollView`'s keyboard dismiss mode is interactive

            let view = recognizer.view,
            let window = UIApplication.shared.windows.first
            else { return }

        // if there's no difference in frames for the `cachedNotification`, no adjustment is necessary. This is true when the keyboard is completely dismissed, or our pan doesn't intersect below the keyboard
        guard cachedNotification?.startFrame != cachedNotification?.endFrame else { return }
        
        let location = recognizer.location(in: view)
        let absoluteLocation = view.convert(location, to: window)
