How to clear UITextView while editing?

I currently have the following code:

class NewPostController: UIViewController { @IBOutlet weak var MessageField: UITextView! override func viewDidLoad() { super.viewDidLoad() MessageField.text = "What on your mind?" MessageField.textColor = UIColor.lightGrayColor() } func textViewDidBeginEditing(MessageField: UITextView) { if MessageField.textColor == UIColor.lightGrayColor() { MessageField.text = "" MessageField.textColor = UIColor.blackColor() } } 

However, when I edit MessageField , the code inside textViewDidBeginEditing does not start. I suspect that this is due to the incorrect way of linking MessageField inside the function, but I do not know what to do.

+7
swift uitextview
source share
3 answers

It looks like you are not setting your delegate UITextView .

 class ViewController: UIViewController, UITextViewDelegate { @IBOutlet weak var myTextView: UITextView! override func viewDidLoad() { super.viewDidLoad() myTextView.delegate = self } func textViewDidBeginEditing(textView: UITextView) { myTextView.text = String() } 

Link to UITextViewDelegate Protocol

+18
source share

And to get @DanielStorm to respond to work in Swift 3:

 func textViewDidBeginEditing(_ textView: UITextView) { myTextView.text = "" } 
+1
source share

In addition to the answers already provided, I would probably take an approach to preserving whether it was first cleared as an instance variable in your class. In most cases, the user should expect to be cleared only when they start editing for the first time (to get rid of any placeholder text):

 func textViewDidBeginEditing(_ textView: UITextView) { if !self.textViewClearedOnInitialEdit { self.textView.text = "" self.textViewClearedOnInitialEdit = true } } 
+1
source share

All Articles