   
   override func viewDidAppear(animated: Bool) {
     super.viewDidAppear(animated)
-    handleTitlePlaceholderAndCursor()
+    handlePlaceholderAndCursor(textView: header, placeholder: headerPlaceholder, header: true)
+    handlePlaceholderAndCursor(textView: body, placeholder: bodyPlaceholder, header: false)
   }
   
   // MARK: - create

  }
  
  private func createConstraints() {
    constraintButtonDoubleBottom(topSeparator: topSeparator, midSeparator: midSeparator, left: no, right: yes)
    
    modalBottomConstraint = NSLayoutConstraint(item: modal, attribute: .Bottom, relatedBy: .Equal, toItem: view, attribute: .Bottom, multiplier: 1, constant: -modalPadding)

  }
  
  func textViewDidChange(textView: UITextView) {
    // hide the placeholderwhen typing
    handlePlaceholderAndCursor(textView: header, placeholder: headerPlaceholder, header: true)
    handlePlaceholderAndCursor(textView: body, placeholder: bodyPlaceholder, header: false)
  }
  
  private func handlePlaceholderAndCursor(textView textView: UITextView, placeholder: UILabel, header: Bool) {
    // FIXME: rotating device with placerholder location (need delay to get correct modal.frame.width)
    Util.delay(0.1) {
      let textWidth: CGFloat = placeholder.intrinsicContentSize().width
      let textViewTextSize: CGFloat = textView.font!.pointSize
      let x: CGFloat = (self.modal.frame.width - (header ? 0 : Constant.Button.padding/2))/2 - textWidth/2
      let y: CGFloat = textViewTextSize/2
      
      placeholder.frame.origin = CGPointMake(x, y)
      placeholder.hidden = !textView.text.isEmpty
      textView.textContainerInset = textView.text.isEmpty ? UIEdgeInsets(top: textViewTextSize/2, left:-textWidth, bottom: 0, right: 0) : UIEdgeInsets(top: textViewTextSize/2, left:0, bottom: 0, right: 0)
    }
  }
  
