TextViewはTextFieldのようにPlaceholderを設定できないため、自分で実装する必要がある。
ここでは、TextViewの上にLabelを設置し、TextViewの入力判定を行い、入力された時は非表示にする方法でPlaceholderを作成する。
また入力判定にはUITextViewDelegateのデリゲートメソッドを使う。
1. StoryBoardでTextViewの上にLabelを設置する。
TextViewの上にLabelを設置して、textを「メモ」に設定し、色をグレーにした。
2. UITextViewDelegateプロトコルと、デリゲートを設定
プロトコル追加↓
class ViewController: UIViewController,UITextViewDelegate{
デリゲート設定↓(※IBOutletでtextViewやLabelを繋ぐのを忘れずに)
textView.delegate = self
3.textViewDidChange()メソッドで入力判定しラベルの表示/非表示を設定
//テキストが書き換えられるたびに呼ばれる func textViewDidChange(_ textView: UITextView) { //テキスト未入力の場合のみLabelを表示する memoLabel.isHidden = textView.text.isEmpty ? false : true }
テキストを入力するとラベルが非表示となる↓
参考:UITextViewにてPlaceholderを実装する
[Swift 4.2] UITextViewにプレースホルダーを追加する[iOS 12]