becomeFirstResponder:automáticamente, desplácese hasta el UIControl que se convierte en el primer respondedor

StackOverflow https://stackoverflow.com/questions/5042895

Pregunta

Tengo un agrupados UITableViewController con una sección y el número de filas.Cada cell consta de dos elementos:un UILabel con una descripción y un UITextField para una entrada.Una forma, diría yo.

En la parte inferior hay un botón de "Siguiente", vaya a la siguiente vista.Pero antes de eso, yo validar la UITextField's:si el usuario no ha llenado un campo, este campo debe obtener el foco, por lo que el usuario ve que necesita para entrar en algo.He probado con esto:

[inputField becomeFirstResponder];

Recuerde que el botón es presionado en la parte inferior de mi punto de vista e imaginar que la UITextField es en la parte superior.En esta situación, el campo no obtener la atención debido a que es demasiado lejos.Ahora, cuando me desplazo lentamente, y el campo se vuelve visible, el campo se convierte en la primera respuesta y se pone el cursor :-) Conclusión:El becomeFirstResponder funcionó, pero no exactamente lo que yo quería.No quiero para desplazarse hacia arriba con el dedo, el campo debe obtener el foco y visible automáticamente.

Hay alguna forma de "saltar" directamente a mi campo?El uso de una alternativa a la becomeFirstResponder?Desplácese a mi campo de forma automática?

Gracias por su ayuda!

¿Fue útil?

Solución

Si usted sabe que el índice de la celda con el UITextField quieres editar, usar



NSIndexPath* indexPath = [[NSIndexPath indexPathWithIndex:your_section_index] indexPathByAddingIndex:your_cell_index];
[tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]

antes de llamar becomeFirstResponder.

Si la celda está fuera de la pantalla, becomeFirstResponder puede fallar para algunas versiones de iOS.Además, algunas versiones llevará a cabo adicionales de desplazamiento en el formato tableview en algunas situaciones (por ejemplo,si Apple código determina que el respondedor todavía estaría fuera de la pantalla sin más desplazamiento).Para evitar estos problemas, puede que tenga que llamar a convertirse en la primera respuesta después de que el desplazamiento de la animación es completa.

Otros consejos

Me gustaría el mismo problema. es debido a la UIAnimation que se producen para las dos tareas simultáneamente.Así, mientras que la UIAnimation para scrollToRowAtIndexPath ignora la becomeFirstResponder .

La solución podría ser desactivar el efecto de Animación de uno de O otro uso de la performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:1.0f];.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top