         }
     }
     
+    // MARK: - UITextField text/placeholder positioning Overrides
+    
+    override public func textRectForBounds(bounds: CGRect) -> CGRect {
+        let titleHeight = self.titleHeight()
+        let lineHeight = self.selectedLineHeight
+        let rect = CGRectMake(0, titleHeight, bounds.size.width, bounds.size.height - titleHeight - lineHeight)
+        return rect
+    }
+    
+    override public func editingRectForBounds(bounds: CGRect) -> CGRect {
+        let titleHeight = self.titleHeight()
+        let lineHeight = self.selectedLineHeight
+        let rect = CGRectMake(0, titleHeight, bounds.size.width, bounds.size.height - titleHeight - lineHeight)
+        return rect
+    }
+    
+    override public func placeholderRectForBounds(bounds: CGRect) -> CGRect {
+        let titleHeight = self.titleHeight()
+        let lineHeight = self.selectedLineHeight
+        let rect = CGRectMake(0, titleHeight, bounds.size.width, bounds.size.height - titleHeight - lineHeight)
+        return rect
+    }
+    
+    override public func drawPlaceholderInRect(rect: CGRect) {
+        if let
+            placeholder = self.placeholder,
+            font = self.placeholderFont ?? self.font {
+                var adjustedRect = rect
+                adjustedRect.origin.y = rect.origin.y + (rect.size.height - font.lineHeight)/2.0
+                (placeholder as NSString).drawInRect(adjustedRect, withAttributes: [NSForegroundColorAttributeName:self.placeholderColor, NSFontAttributeName: font])
+        }
+    }
+    
     // MARK: - Positioning Overrides
     
     /**

    @IBInspectable public var lineHeight:CGFloat = 0.5 {
        didSet {
            self.updateLineView()
        }
    }
    

    @IBInspectable public var selectedLineHeight:CGFloat = 1.0 {
        didSet {
            self.updateLineView()
            self.setNeedsDisplay()
        }
    }
    
