Vous pourriez aussi bien utiliser les méthodes de UITextFieldDelegate (à mon humble avis, plus facile à entretenir que les observateurs clé-valeur):
#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;
}
Cela ne fonctionne que lorsque la propriété UITextField.borderStyle est de n'importe quel type sauf UITextBorderStyleRoundedRect (dans ce cas, la propriété background n'est pas prise en compte). Cela signifie que vous pouvez utiliser le code ci-dessus avec UITextBorderStyleBezel, UITextBorderStyleLine et UITextBorderStyleNone, comme expliqué dans la documentation borderStyle:
borderStyle
Le style de bordure utilisé par le champ de texte.
@property (nonatomic) UITextBorderStyle borderStyle
Discussion
La valeur par défaut de cette propriété est UITextBorderStyleNone. Si une image d'arrière-plan personnalisée est définie, cette propriété est ignorée.
Ceci est la documentation de la propriété d'arrière-plan UITextField:
fond
L'image qui représente l'aspect de fond du texte champ lorsqu'il est activé.
@property (nonatomic, conserver) UIImage * fond
Discussion
Lorsqu'il est activé, l'image désignée par cette propriété remplace l'apparence standard contrôlée par la propriété borderStyle. Contexte images sont dessinées dans la partie rectangle de l'image. Images que vous utilisez pour l'arrière-plan du champ de texte devrait être en mesure d'étirer pour s'adapter.
merci de mentionner à propos du borderStyle. Cela devrait être mentionné dans la documentation de la propriété background de UITextField – DonnaLea
J'ai trouvé une erreur dans votre texte. Si UITextField a des angles arrondis, il ignore toutes les images d'arrière-plan. Pas le contraire – Gargo