Ответ 1
Вы также можете использовать методы UITextFieldDelegate (IMHO, проще поддерживать, чем наблюдатели с ключом):
#pragma mark -
#pragma mark UITextFieldDelegate methods
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
_field.background = [UIImage imageNamed:@"focus.png"];
return YES;
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
_field.background = [UIImage imageNamed:@"nofocus.png"];
return YES;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
Это работает только тогда, когда свойство UITextField.borderStyle имеет любой тип, но UITextBorderStyleRoundedRect (в этом случае свойство фона не учитывается). Это означает, что вы можете использовать приведенный выше код с UITextBorderStyleBezel, UITextBorderStyleLine и UITextBorderStyleNone, как описано в документации borderStyle:
borderStyle
Стиль границы, используемый текстовым полем.
@property (неатомный) UITextBorderStyle borderStyle
Обсуждение
Значение по умолчанию для этого свойства UITextBorderStyleNone. Если пользовательский фоновое изображение установлено, это свойство игнорируется.
Это документация для свойства background UITextField:
фон
Изображение, представляющее фоновый вид текста если он включен.
@property (неатомный, сохраняющий) UIImage * Фон
Обсуждение
Когда установлено, изображение, на которое ссылается это свойство заменяет стандарт внешний вид, контролируемый свойство borderStyle. Задний план изображения рисуются на границе прямоугольная часть изображения. Изображений вы используете для текстовых полей фон должен уметь растягиваться чтобы соответствовать.