     /// This closure will be called after the text view's `height` is changed.
     /// The parameter is the height that the text view was updated to as a `CGFloat`.
     public var didChangeHeight: ((CGFloat) -> Void)?
+    
+    // MARK: Private Properties
+    
+    private var heightConstraint: NSLayoutConstraint!
+    
+    private var initialIsScrollEnabled: Bool = true
+    private var initialShowsVerticalScrollIndicator: Bool = true
+    
+    private var maxHeight: CGFloat? {
+        return calculateHeight(for: maxResizableHeight)
+    }
+    
+    private var minHeight: CGFloat? {
+        return calculateHeight(for: minResizableHeight)
+    }
+    
+    private var isMaxHeight: Bool = false {
+        didSet {
+            if !oldValue {
+                initialIsScrollEnabled = isScrollEnabled
+                initialShowsVerticalScrollIndicator = showsVerticalScrollIndicator
+            }
+            isScrollEnabled = isMaxHeight ? true : initialIsScrollEnabled
+            showsVerticalScrollIndicator = isMaxHeight ? true : initialShowsVerticalScrollIndicator
+        }
+    }
     
     /*
      *  MARK: - Object Lifecycle

    
    private func updateHeightConstraint(_ newHeight: CGFloat) {
        willChangeHeight?(newHeight)
        UIView.animate(withDuration: resizeDuration,
                       delay: 0,
                       options: .layoutSubviews,
                       animations: { self.heightConstraint.constant = newHeight },
                       completion: { [weak self] _ in
                        self?.didChangeHeight?(newHeight)
        })
    }
    
}

     */
    
    @objc func didUpdateText(_ sender: AnyObject) {
        var newHeight = heightForCurrentText()
        
        if let maxHeight = maxHeight, newHeight >= maxHeight {
            newHeight = maxHeight
            isMaxHeight = true
        } else {
            if let minHeight = minHeight, newHeight < minHeight {
                newHeight = minHeight
            }
            isMaxHeight = false
        }
        
        if newHeight != heightConstraint.constant {
            updateHeightConstraint(newHeight)
        }
