         self.textHeight = self._textHeight()
     }
     
+    open override func updateConstraints() {
+        super.updateConstraints()
+        
+        self._constraints = [
+            self._placeholderLabel.topLayout == self.topLayout.offset(self.placeholderInsets.top),
+            self._placeholderLabel.leadingLayout == self.leadingLayout.offset(self.placeholderInsets.left),
+            self._placeholderLabel.trailingLayout == self.trailingLayout.offset(-self.placeholderInsets.right),
+            self._placeholderLabel.bottomLayout == self.bottomLayout.offset(-self.placeholderInsets.bottom),
+            self._field.topLayout == self.topLayout,
+            self._field.leadingLayout == self.leadingLayout,
+            self._field.trailingLayout == self.trailingLayout,
+            self._field.bottomLayout == self.bottomLayout
+        ]
+    }
+    
     public func add(observer: IQMultiTextFieldObserver, priority: UInt) {
         self._observer.add(observer, priority: priority)
     }

    public var onEndEditing: Closure?
    public var onPressedAction: ActionClosure?
    public var onChangedHeight: Closure?
    
    open override var intrinsicContentSize: CGSize {
        get {
            if self._placeholderLabel.isHidden == false {
                return self._placeholderLabel.intrinsicContentSize
            }
            return self._field.intrinsicContentSize
        }
    }

    private var _placeholderLabel: QLabel!
    private var _field: Field!
    private var _fieldDelegate: FieldDelegate!
    private var _observer: QObserver< IQMultiTextFieldObserver > = QObserver< IQMultiTextFieldObserver >()
    
    open override func setup() {
        super.setup()

    
    open func beginEditing() {
        self._field.becomeFirstResponder()
    }
    
    public func apply(_ styleSheet: QMultiTextFieldStyleSheet) {
