2012-10-19 17 views
6

voglio evidenziare un UITextField quando un utente sta modificando, così ho impostato di default Stile bordo del mio campo di testo per UITextBorderStyleNone e utilizzare i uitextfields delegati come segue:Modifica BorderStyle UITextField in didEndEditing

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    [textField setBorderStyle:UITextBorderStyleBezel]; 
} 

- (void)textFieldDidEndEditing:(UITextField *)textField 
{ 
    [textField setBorderStyle:UITextBorderStyleNone]; 
} 

Lo stile lunetta viene impostata e renderizzato, ma quando viene chiamato il finaliting, lo stile none non viene applicato. Ho provato a cambiare il none in un altro (ad esempio arrotondato rect), ma quello lo rende correttamente.

Qualcuno sa come posso farlo funzionare?

+0

Hai avuto qualche soluzione per questo problema? Se sì, allora condivido con me .. –

+0

No, mi dispiace, ho segnalato ad Apple come un bug e sembra essere un bug valido ... – Myth1c

risposta

10

Sì, è un bug. Ad ogni modo, ho risolto utilizzando questo codice:

textField.borderStyle = UITextBorderStyleLine; 
textField.borderStyle = UITextBorderStyleNone; 

Questo non è un metodo molto bello, ma fa il lavoro fino a quando Apple risolve questo problema.

+1

Come facciamo a sapere quando o se Apple ha risolto questo? – JohnnyRedTruss

2

Ho avuto anche questo problema. Dai miei test sembrava che potessi impostarlo su uno stile diverso da UITextBorderStyleNone.

Una soluzione che ha funzionato per me almeno è stato invalidante e riattivare il campo di testo, come si vede qui sotto:

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    textField.enabled = NO; 
    textField.borderStyle = UITextBorderStyleNone; 
    textField.enabled = YES; 
} 

non mi piace molto ma funziona per ora.

+0

5 anni e ancora un problema. – Jalakoo