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でのプレースホルダーを実現できる方法かと思います。自分のアプリもこれで実装しました!