 @objc public protocol KeyboardAdjusting {
     /// This should be the constraint for the bottom of the view that should adjust with the keyboard
     var constraintToAdjust: NSLayoutConstraint? { get }
+    /// This should be the scroll view that needs to be adjusted for the keyboard
+    var scrollViewToAdjust: UIScrollView? { get }
     @objc func keyboardWillChangeFrame(_ notification: Notification)
     @objc func keyboardWillHide()
 }

        let adjustedConstant = self.adjustedConstant(for: keyboardFrame, statusBarHeight: statusBarHeight)
        let curve = UIViewAnimationOptions(rawValue: curveInt)
        setConstant(of: constraint, to: adjustedConstant, animated: true, duration: duration, curve: curve)
    }
    
    /**

        return max(offset, 0)
    }
    
    func adjustedInset(for keyboardFrame: CGRect, statusBarHeight: CGFloat = 0.0) -> CGFloat {
        return adjustedConstant(for: keyboardFrame, using: scrollViewToAdjust, statusBarHeight: statusBarHeight)
    }
    
    /**
     Call this function from `keyboardWillHide` in order to have the constraint constant reset back to zero.
     */
    public func keyboardWillDisappear(constraint: NSLayoutConstraint? = nil) {
        setConstant(of: constraint, to: 0, animated: true)
        adjustBottomInsets(to: 0, animated: true)
    }
    
    func setConstant(of constraint: NSLayoutConstraint?, to constant: CGFloat, animated: Bool = false, duration: TimeInterval = 0.3, curve: UIViewAnimationOptions? = nil) {
