Почему UITextview не имеет свойства заполнителя, такого как UITextField
Привет, я работаю с iPhone-приложениями, я знаю, что UITextfield имеет свойство placeholder. Но UITextview не имеет свойства placeholder. Я знаю, как настроить компоновщик для UITextview. Но, пожалуйста, дайте мне знать разницу.
и UITextfield наследует от UIControl, который inturns наследует от UIView... NSObject.
и UITextview наследует UIScrollView, UIView, UIresponder... NSOBject. Но где разница от собственности владельца места.
Как текстовое поле содержит свойство placeholder, почему textview не содержит placeholder?
Пожалуйста, дайте любые идеи, предложения и/или дайте лучшее объяснение.
Ответы
Ответ 1
Почему UITextField
имеет значение placeholder и UITextView
не имеет никакого отношения к их наследованию или даже к программированию. Это о том, как Apple воспринимает их использование и предпочитает их использование.
UITextField
- это одна позиция. Его можно использовать для ввода имен пользователей, паролей, битов адреса или почти что угодно. Часто у вас есть несколько из них сгруппированы вместе, и может быть трудно определить, какое поле должно иметь какие данные без текста заполнителя. Держатель места позволяет нам знать цель поля.
![Text field example]()
UITextView
- это блок текста. Обычно несколько строк, которые часто имеют заголовок, связанный с ними. В результате текст-заполнитель часто не полезен. Текстовое представление также скорее всего будет заполнено статическим текстом, который снова сделает текст заполнителя не очень полезным.
Думаю, Apple в любом случае должна добавить свойство placeholder для UITextView
? Да. Мне досадно, что я должен сделать свой собственный по случаю, когда мне это нужно. Apple также использует текст заполнителя в некоторых местах, где он использует UITextView
. Следующий пример состоит в добавлении записи календаря.
![Text view example with placeholder]()
Ответ 2
Я не знаю, почему Apple не включила атрибут placeHolder в UITextView. Но я смог добавить один, используя подпрограмму 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);
}