未経験からのiPhoneアプリ開発blog

iPhoneアプリ開発の独学をしています。学習した内容をメモ的に記録していきます。

UTTextViewでおそらく最も簡単にプレースホルダーを設定する方法

UITextViewでプレースホルダーを設定したい場合、残念ながら、UITextFieldのように、こんなコードは使えないようです。

textView.placeholder = @"placeholder text here...";

 

 で、じゃあ、どうやってUITextViewでプレースホルダーを設定する場合どうするのってことでググると、どうやらかなーり面倒なコードになるらしい…というのがすごく伝わってきたので、ちょっとゲンナリしたのですが、こちらの記事で解決しました!(海外サイトだけど)

 

いろんな人がいろんな方法を回答しているのですが、その中でも、CmKndyさんの回答がダントツでシンプルだったので、使わせてもらいました。

 

まぁ、正直、厳密にはプレースホルダーとは言わないですけど、見た目完全にプレースホルダーと同じなので、細かいことは気にしない。それは、普通にデフォルト状態でプレースホルダーとして使う文章をプレースホルダー風に見せて表示させるという方法です。色も薄いグレーあたりにするとGoodです。やってることは、普通にUITextViewに薄いグレーでテキストを入れるってことだけです。

 

まずは、.hファイルでちゃんとデリゲートを宣言。

@interface FirstViewController () <UITextViewDelegate>

 

.mファイルのViewDidLoad内でインスタンスを作成

UITextView*myUITextView =[[UITextView alloc] init];
myUITextView.delegate= self;
myUITextView.text = @"placeholder text here...";
myUITextView.textColor =[UIColor lightTextColor];//optional

 

.mファイルで

// UITextViewをタップした時、プレースホルダーを消して、文字をブラックにする。
- (void)textViewDidBeginEditing:(UITextView *)textView { if ([textView.text isEqualToString:@"placeholder text here..."]) {
textView.text = @"";
textView.textColor = [UIColor blackColor]; //optional
} [textView becomeFirstResponder]; }

// UITextViewをタップした時、中身が空の場合にのみプレースホルダーを再表示させる。
- (void)textViewDidEndEditing:(UITextView *)textView { if ([textView.text isEqualToString:@""]) {
textView.text = @"placeholder text here..."; textView.textColor = [UIColor lightTextColor]; //optional
} [textView resignFirstResponder]; }

 

というわけで、これがおそらく最も簡単にUITextViewでのプレースホルダーを実現できる方法かと思います。自分のアプリもこれで実装しました!