Selectall uitextfield no siempre selecciona todo

- (void)textFieldDidBeginEditing:(UITextField *)textField { [textField selectAll:self]; } - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; } 

En lo anterior, el campo de text se selecciona correctamente, pero cuando return del keyboard y presiono el campo de text por segunda vez consecutiva, no selecciona el text. Si no lo recojo consecutivamente o si deselecciono el text antes de regresar del keyboard, el siguiente foco de ese campo de text seleccionará el text correctamente.

¿Cómo puedo seleccionar el text en el caso antes mencionado?

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

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

Resolví este problema usando 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 }