Sie könnten genauso gut die UITextFieldDelegate-Methoden verwenden (IMHO einfacher zu pflegen als Key-Value-Beobachter):
#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;
}
Dies funktioniert nur, wenn die Eigenschaft UITextField.borderStyle von einem anderen Typ als UITextBorderStyleRoundedRect ist (in diesem Fall wird die Eigenschaft background nicht berücksichtigt). Das bedeutet, dass Sie den obigen Code mit UITextBorderStyleBezel, UITextBorderStyleLine und UITextBorderStyleNone verwenden können, wie in der borderStyle-Dokumentation erläutert:
borderStyle
Der für das Textfeld verwendete Rahmenstil.
@property(nonatomic) UITextBorderStyle borderStyle
Diskussion
Der Standardwert für diese Eigenschaft ist UITextBorderStyleNone. Wenn ein benutzerdefiniertes Hintergrundbild eingestellt ist, wird diese Eigenschaft ignoriert.
Dies ist die Dokumentation für die Eigenschaft background von UITextField:
Hintergrund
Das Bild, das die Hintergrundbild des Textfeldes Feldes darstellt, wenn es aktiviert ist.
@property(nonatomic, retain) UIImage *Hintergrund
Diskussion
Wenn gesetzt, ersetzt das Bild, auf das diese Eigenschaft Eigenschaft referenzierte Bild ersetzt die Standard Erscheinungsbild, das durch die Eigenschaft borderStyle-Eigenschaft gesteuert wird. Hintergrund Bilder werden im Rahmen gezeichnet Rechteck des Bildes gezeichnet. Bilder die Sie für den Hintergrund des Textfelds verwenden Hintergrund verwenden, sollten sich passen.