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

En lo anterior, el campo de texto selecciona correctamente, pero cuando regrese desde el teclado y toque el campo de texto por segunda vez consecutiva, no seleccione el texto. Si no lo elijo consecutivamente o si anulo la selección del texto antes de regresar del teclado, el siguiente foco de ese texto Campo selecciona el texto correctamente.selectall UITextField no siempre selecciona todos

¿Cómo puedo seleccionar el texto en el caso mencionado anteriormente?

Respuesta

10

He encontrado una solución perfecta (invocar selectAll en el próximo runloop):

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

Gracias, voy a probar esto cuando pueda – shiggity

+0

¡Debe ser un genio! Este es un error en iOS 6 y 7, y pensé que la única solución era archivar un error y esperar una solución. ¡Gracias! –

+2

Archivado un error de todos modos: # 15781101 "UITextField -selectAll: solo funciona en cualquier otro momento". –

2

He resuelto este problema utilizando Grand Central Dispatch. Puede envolver [textField selectAll:self]; con una llamada dispatch_async y dispatch_get_main_queue() como primer parámetro.

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