Równie dobrze można użyć metod UITextFieldDelegate (IMHO, łatwiejsze w utrzymaniu niż obserwatorów klucz-wartość):
#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;
}
Działa to tylko wtedy, gdy właściwość UITextField.borderStyle jest dowolnego typu, ale UITextBorderStyleRoundedRect (w takim przypadku właściwość tła nie jest brana pod uwagę). Oznacza to, można użyć kodu powyżej UITextBorderStyleBezel, UITextBorderStyleLine i UITextBorderStyleNone, jak wyjaśniono w dokumentacji BorderStyle:
BorderStyle
Styl obramowania używany przez pola tekstowego.
@property (nonatomic) UITextBorderStyle BorderStyle
Dyskusja
Domyślna wartość tej właściwości jest UITextBorderStyleNone. Jeśli ustawiony jest niestandardowy obraz tła , ta właściwość jest ignorowana.
Jest to dokumentacja dla właściwości tła UITextField:
tło
Obraz, który przedstawia wygląd tła pola tekstowego gdy jest on włączony.
@property (nonatomic, zachowują) UIImage * tło
Dyskusja
Kiedy zestaw, obraz, o którym mowa przez ta właściwość zastępuje standardowy wygląd kontrolowane przez właściwość BorderStyle. Obrazy tła są rysowane na granicy prostokątna część obrazu. Obrazy używane na potrzeby pola tekstowego powinny być w stanie rozciągnąć , aby pasowały.
dzięki za wzmianka o borderStyle. To powinno być wspomniane w dokumentacji dla właściwości tła UITextField – DonnaLea
Znalazłem błąd w tekście. jeśli UITextField ma zaokrąglone kąty, to ignoruje wszystkie obrazy tła. Nie vice versa – Gargo