こんにちは私はiPhoneアプリで作業しています。UITextfieldにプレースホルダープロパティがあることを知っています。ただし、UITextviewにはプレースホルダープロパティがありません。 UITextviewのプレースホルダーをカスタマイズする方法を知っています。ただし、違いを教えてください。
uITextfieldはUIControlを継承し、UIControlはUIView ... NSObjectを継承します。 UITextviewは、UIScrollView、UIView、UIresponder ... NSOBjectを継承しています。しかし、プレースホルダープロパティとの違いはどこにありますか。
Textfieldにプレースホルダープロパティが含まれる方法、textviewにプレースホルダーが含まれない理由
アイデア、提案、および/またはより良い説明を与えてください。
UITextField
にプレースホルダー値があり、UITextView
がその継承やプログラミングとは何の関係もないのはなぜですか。 Appleが彼らの使用を認識し、その使用を好む方法についてです。
UITextField
は1行の項目です。ユーザー名、パスワード、アドレスビットなど、ほとんど何でも入力できます。多くの場合、それらのいくつかがひとまとめにされており、プレースホルダーテキストがないと、どのフィールドにどのデータが必要かを理解するのが難しい場合があります。プレースホルダーは、フィールドの目的を知らせます。
UITextView
はテキストのブロックです。通常、複数の行があり、それらにはヘッダーが関連付けられていることがよくあります。その結果、プレースホルダーテキストは役に立たないことがよくあります。また、テキストビューには静的テキストが入力される可能性が高く、この場合もプレースホルダーテキストはあまり役に立たなくなります。
AppleとにかくUITextView
のプレースホルダープロパティを追加する必要があると思いますか?はい、必要なときに自分で作成しなければならないのは面倒です。Appleは、UITextView
を使用するいくつかの場所でプレースホルダテキストも使用します。次の例は、カレンダーエントリを追加したものです。
AppleがUITextViewにplaceHolder属性を含めなかった理由はわかりません。しかし、プレースホルダーテキストを含むUILabelサブビューを使用して属性を追加することができました。
次に、以下のようにデリゲートコールバックから表示または非表示にします
- (void)textViewDidBeginEditing:(UITextView *)textView
{
self.defaultLabel.hidden = YES;
}
- (void)textViewDidChange:(UITextView *)txtView
{
self.defaultLabel.hidden = ([txtView.text length] > 0);
}
- (void)textViewDidEndEditing:(UITextView *)txtView
{
self.defaultLabel.hidden = ([txtView.text length] > 0);
}