         setConstant(of: constraint, to: adjustedConstant)
     }
     
-    func adjustedConstant(for keyboardFrame: CGRect, statusBarHeight: CGFloat = 0.0) -> CGFloat {
+    func adjustedConstant(for keyboardFrame: CGRect, using wrapperView: UIView? = nil, statusBarHeight: CGFloat = 0.0) -> CGFloat {
+        let adjustedWrapper = wrapperView ?? view.superview
         guard let window = view.window,
-            let wrapper = view.superview
+            let wrapper = adjustedWrapper
             else { return 0.0 }
         let adjustedFrame = wrapper.convert(wrapper.frame, to: window)
         var maxY = adjustedFrame.maxY

@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 }
    @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)
        let adjustedInset = self.adjustedInset(for: keyboardFrame, statusBarHeight: statusBarHeight)
        adjustBottomInsets(to: adjustedInset, animated: true, duration: duration, curve: curve)
    }
    
    /**
