Pourquoi UITextview n'a pas de propriété placeholder comme UITextField [dupliquer]
cette question a déjà une réponse ici:
- espace Réservé dans UITextView 60 réponses
Salut je travaille avec des applications iPhone, je sais que L'UITextfield a la propriété placeholder. Mais UITextview n'a pas de propriété placeholder. Je sais comment personnaliser placeholder pour UITextview. Mais s'il vous plaît laissez-moi savoir la différence.
et UITextfield hérite D'UIControl qui, à son tour, hérite d'UIView...NSObject. et UITextview hérite de UIScrollView, UIView, UIresponder...NSOBject. Mais où est la différence par rapport à la propriété de la place titulaire.
comment textfield contient la propriété placeholder, pourquoi textview ne contient pas de placeholder?
Veuillez donner des idées, des suggestions, et/ou donner une meilleure explication.
2 réponses
pourquoi UITextField
a une valeur de réserve et UITextView
n'a rien à voir avec leur héritage, ou même la programmation. Il s'agit de la façon dont Apple a perçu leur utilisation et préfère leur utilisation.
UITextField
est un élément de ligne. Il peut être utilisé pour entrer des noms d'Utilisateur, des mots de passe, des bits d'adresse, ou à peu près n'importe quoi. Vous avez souvent plusieurs d'entre eux agglutinées, et il peut être difficile de déterminer quel champ doit avoir quelles données sans texte placeholder. Le porteur de place nous fait connaître le but du champ.
UITextView
est un bloc de texte. Généralement plusieurs lignes, qui ont souvent un en-tête associé à eux. Par conséquent, le texte de remplacement n'est souvent pas utile. La vue de texte est aussi plus susceptible d'être peuplée de texte statique qui, encore une fois, rendrait le texte placeholder pas vraiment utile.
est-ce que je pense Qu'Apple devrait ajouter une propriété de remplacement pour UITextView
de toute façon? Oui. C'est ennuyeux d'avoir à faire mes propres sur l'occasion quand j'en ai besoin. Apple utilise également le texte des espaces réservés dans certains endroits où il utilise un UITextView
. L'exemple suivant est d'ajouter une entrée d'agenda.
Je ne sais pas pourquoi Apple n'a pas inclus un attribut placeHolder sur UITextView. Mais j'ai pu en ajouter un en utilisant UILabel subview qui contient le texte du placeholder.
puis afficher ou cacher les callbacks des délégués comme ci-dessous
- (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);
}