2012-07-07 20 views
7

Tengo un textField que está configurado para cambiar el dataSource de tableView con cada letra que se ingresa (y llamar a reloadData).UITableView reloadData causa que UITextField resignFirstResponder

Pero por alguna razón, cada vez que se ingresa una letra, el teclado se descarta.

¿Alguien sabe por qué?

+1

Publique un código de los métodos para comenzar la edición de su campo de texto y cualquier otro método relevante, no podemos ayudarlo si no podemos ver cuál es el problema. – 8vius

+1

posible duplicado de [UITableView reloadData resuelve el primer respondedor] (http://stackoverflow.com/questions/6409370/uitableview-reloaddata-resigns-first-responder) – CodaFi

+0

@CodaFi lo has encontrado. El campo textField estaba en una celda personalizada en la parte superior de la tabla, así que cuando reloadData vuelve a cargar esa celda también se renuncia a todo lo que contiene. ¡¡¡GRACIAS!!! –

Respuesta

10

Su campo de texto está renunciando porque las celdas recargadas reciben un mensaje -resignFirstResponder debido a que su supervivencia no está garantizada después de una recarga. Consulte esta pregunta related para obtener más información.

+0

Una buena solución es agregar un campo de texto oculto a la vista y cambiar el foco a ese campo de texto al volver a cargar la tabla. Después de volver a cargar la tabla, puede volver a enfocar el campo de texto original para mantener ese teclado abierto. [self.fakeTextField becomeFirstResponder]; [self.tableView reloadData]; [self.textField performSelector: @selector (becomeFirstResponder) withObject: nil afterDelay: .01]; – hobosf

-3

Utilice este método textFieldShouldReturn: y agregue UITextFieldDelegate delegado en su archivo Class.h. configure delegate en suTextfield y escriba el siguiente código en el método viewDidLoad.

yourTextfield.delegate = self;

y también implementar el textFieldShouldReturn: como siguiente como

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { 

     [theTextField resignFirstResponder]; 

    return YES; 
} 

Creo que va a ser útil para usted.

Cuestiones relacionadas