     override open func editingRect(forBounds bounds: CGRect) -> CGRect {
         let superRect = super.editingRect(forBounds: bounds)
         let titleHeight = self.titleHeight()
+
+        var height = superRect.size.height - titleHeight - selectedLineHeight
+        
+        if errorMessagePlacement == .bottomPlacement {
+            height = height - errorHeight()
+        }
 
         let rect = CGRect(
             x: superRect.origin.x,
             y: titleHeight,
             width: superRect.size.width,
-            height: superRect.size.height - titleHeight - selectedLineHeight
+            height: height
         )
         return rect
     }

     - returns: The rectangle that the placeholder should render in
     */
    override open func placeholderRect(forBounds bounds: CGRect) -> CGRect {
        let rect = CGRect(
            x: 0,
            y: titleHeight(),
            width: bounds.size.width,
            height: bounds.size.height - titleHeight() - selectedLineHeight
        )
        return rect
    }

        }

        var titleText: String?
        var errorText: String?
        
        if errorMessagePlacement == .defaultPlacement {
            if hasErrorMessage {
                titleText = titleFormatter(errorMessage!)
            } else {
                if editingOrSelected {
                    titleText = selectedTitleOrTitlePlaceholder()
                    if titleText == nil {
                        titleText = titleOrPlaceholder()
                    }
                } else {
                    titleText = titleOrPlaceholder()
                }
            }
        }
        else {
            if hasErrorMessage {
                errorText = titleFormatter(errorMessage!)
            }
            
            if editingOrSelected {
                titleText = selectedTitleOrTitlePlaceholder()
                if titleText == nil {
