2012-10-01 19 views
8
- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    [textField selectAll:self]; 
} 
- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES;  
} 

In quanto sopra, il campo testo seleziona correttamente ma quando torno dalla tastiera e tocco il campo testo per la seconda volta consecutivamente, non seleziona il testo. Se non lo seleziono consecutivamente o se deseleziono il testo prima di tornare dalla tastiera, il prossimo focus di quel textField seleziona correttamente il testo.selectall uitextfield non sempre seleziona tutto

Come posso selezionare il testo nel caso di cui sopra?

risposta

10

Ho trovato una soluzione perfetta (richiamare selectAll nel prossimo runloop):

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    [textField performSelector:@selector(selectAll:) withObject:textField afterDelay:0.f]; 
} 
+0

Grazie, proverò questo quando posso – shiggity

+0

Devi essere un genio! Questo è un bug su iOS 6 e 7 e ho pensato che l'unica soluzione fosse quella di archiviare un bug e aspettare una soluzione. Grazie! –

+2

Segnala comunque un errore: # 15781101 "UITextField -selectAll: funziona solo ogni volta". –

2

Ho risolto questo problema utilizzando Grand Central Dispatch. È possibile eseguire il wrapping [textField selectAll:self]; con una chiamata dispatch_async e dispatch_get_main_queue() come primo parametro.

dispatch_async(dispatch_get_main_queue()){ 
     // ... code you want to run on the main queue goes here 
    } 
Problemi correlati