drawTextInRect на UITextField не вызывается
Я пытаюсь реализовать ответ на этот ТАК вопрос. Проблема в: -[drawTextInRect]
по-видимому, не называется, и установка тени в -[drawRect]
не делает текст UITextField затененным.
Еще одна странная вещь заключается в том, что даже если мои реализации подкласса -[drawTextInRect]
а также -[drawRect]
полностью пустые (даже не вызов super), текстовое поле текста рисуется.
5 ответов
Это ошибка в UITextField
API документация. В документации указано, что переопределение drawTextInRect:
может быть использован для настройки поведения. Это не вариант.
По факту, drawTextInRect:
никогда не будет вызван на UITextField
(drawPlaceholderInRect:
не будет называться ни кстати).
Смотрите также http://discussions.apple.com/thread.jspa?threadID=1727596.
Переопределение метода на UILabel
работает хоть.
Я думаю, что метод, который вы ищете, это:
- (CGRect)textRectForBounds:(CGRect)bounds
или возможно
- (CGRect)editingRectForBounds:(CGRect)bounds
Я отмечаю, что -[drawTextInRect] вызывается один раз, когда UITextField теряет фокус. Не то, что я хотел.
UITextField не отвечает на - drawTextInRect:
сообщение. Код на странице вы ссылаетесь на подклассы UILabel
не UITextField
Вот почему это не сработало для вас.
Если вы не вызываете super, компилятор может удалить метод во время оптимизации вашего кода. Фактически это означает, что реализация UILabel получила название.
Обновление: если вы используете перо для создания текстового поля, убедитесь, что вы установили класс текстового поля в кончике для своего пользовательского подкласса, иначе ваш пользовательский код не будет вызываться.