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