Кнопка очистки UITextField с ошибкой заполнителя? - PullRequest
2 голосов
/ 14 февраля 2011

У меня есть UITextField со свойством clearButton, установленным на «во время редактирования».Текстовое поле выровнено по правому краю.Когда я фокусируюсь на текстовом поле для редактирования, текст заполнителя не перемещается, поэтому курсор мигает, а половина текста заполнителя стирается.

Есть ли у кого-нибудь обходной путь?

Ответы [ 4 ]

3 голосов
/ 21 февраля 2011

Я только что столкнулся с точно такой же проблемой!Для меня это похоже на ошибку - область, зарезервированная для кнопки очистки, обрезает заполнитель справа.Обходной путь, который я нашел, это изменить стиль кнопки очистки на «всегда», что является неправильным обозначением, поскольку фактически кнопка очистки все еще не отображается, когда заполнитель виден (то есть, когда текст пуст):

textField.clearButtonMode = UITextFieldViewModeAlways;

Это означает, что заполнитель не выровнен полностью вправо (оставляя место для кнопки очистки, даже если ее там нет), что было бы хорошо, если бы кнопка очистки действительно отображалась!Это можно исправить, если убедиться, что UITextField всегда содержит пробел вместо пробела, что заставляет кнопку очистки отображаться всегда (а это значит всегда!).

1 голос
/ 01 октября 2011

У меня была та же проблема, и я решил управлять buttonMode (в моем случае я использую пользовательский rightView), используя методы делегата текстового поля.Подробно я реализовал это:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    if (textField.text.length == 0) {
        textField.rightViewMode = UITextFieldViewModeNever;
    } else {
        textField.rightViewMode = UITextFieldViewModeAlways;
    }
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    if (textField.text.length == 0) {
        textField.rightViewMode = UITextFieldViewModeNever;
    } else {
        textField.rightViewMode = UITextFieldViewModeAlways;
    }
}

- (void)textFieldDidChange:(UITextField *)textField
{
    if (textField.text.length == 0) {
        textField.rightViewMode = UITextFieldViewModeNever;
    } else {
        textField.rightViewMode = UITextFieldViewModeAlways;
    }
}

Метод textFieldDidChange: - это настраиваемое действие, которое я добавил в UITextField для события управления UIControlEventEditingChanged.

0 голосов
/ 02 декабря 2011

Эта проблема была исправлена ​​в iOS 5 :) Спасибо, Apple!

0 голосов
/ 13 апреля 2011

В итоге я подделал заполнитель, изменив цвет переднего плана на серебристый / серый, и когда пользователь сфокусировался, я удалил этот текст и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...