Подтвердить что ты не робот

Почему UITextview не имеет свойства заполнителя, такого как UITextField

Привет, я работаю с iPhone-приложениями, я знаю, что UITextfield имеет свойство placeholder. Но UITextview не имеет свойства placeholder. Я знаю, как настроить компоновщик для UITextview. Но, пожалуйста, дайте мне знать разницу.

и UITextfield наследует от UIControl, который inturns наследует от UIView... NSObject. и UITextview наследует UIScrollView, UIView, UIresponder... NSOBject. Но где разница от собственности владельца места.

Как текстовое поле содержит свойство placeholder, почему textview не содержит placeholder?

Пожалуйста, дайте любые идеи, предложения и/или дайте лучшее объяснение.

4b9b3361

Ответ 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);
}