Hacer un UITableView "pegajoso al background"

Digamos que tiene una vista de tabla T que muestra posts,

T[ message d T[ message c T[ message b T[ most recent message down bottom 

Digamos que hay 100 posts, con la parte inferior 4 visible en el ejemplo.

Entonces, la altura de la vista de tabla es de 700 digamos. Tienes una input de text típica debajo …

 T[ message d T[ message c T[ message b T[ most recent message down bottom [enter snapped chat message!] [send] 

Cuando aparece el keyboard, la nueva altura de la vista de tabla visible es de 400 digamos.

Por supuesto, eso "cortará la parte inferior" de los posts; los dos más recientes ya no estarán visibles.

 T[ message d T[ message c [enter snapped chat message!] [send] [ iOS keyboard ] [ iOS keyboard ] 

(Entonces, los posts A y B ahora están "debajo" del keyboard).

Naturalmente, lo que hace es desplazarse por la tabla después de que aparezca el keyboard, por ejemplo. No hay problema en hacerlo de forma ad hoc.

Sin embargo, sería realmente natural si se pudiera subclassar UITableView de tal forma que, a medida que cambiara el tamaño del área visible, la vista de la tabla supiera mantener el "punto inferior" idéntico .

Por lo tanto, a medida que la parte inferior de la tabla se mueve hacia arriba y hacia abajo (debido a que aparece el keyboard, o por cualquier causa), la tabla se desplazaría en realidad basándose en el movimiento de la "base" de la tabla.

(Además de cualquier otra cosa, esto resolvería la molestia de "coincidir con la temporización de la animation").

¿Podría lograrse esto elegantemente y, de ser así, cómo – de hecho, esto parece tan natural en estos días, tal vez esté incorporado a UITableView como una bandera y simplemente no lo sé?

una vez más la pregunta aquí es

Cómo modificar UITableView para que mueva su propia position de desplazamiento, ya que, el tamaño de la vista cambia …

(para mantener el "punto inferior igual")

Tenga en count que es trivial simplemente desplazarse por la tabla "manualmente" por así decirlo desde el exterior.

Los encabezados de sección se adhieren a la parte superior, así que tal vez algo como esto:
1. Haga que el post más reciente sea una vista de encabezado de sección en lugar de una celda de tabla
2. Espejen la vista de tabla verticalmente:
tableView.transform = CGAffineTransformMakeScale(1, -1);
3. Espere verticalmente el encabezado de sección y las celdas de la tabla.
4. Invierta el order de sus posts.

¿Eso es lo que estabas buscando?

Por lo que sé, tienes algunas opciones para hacer esto:

Si tiene el path index de la fila que desea que sea visible:

 tableView.ScrollToRow(indexPath, UITableViewScrollPosition.Top, true); 

Esto se desplazará a la celda dada por indexPath. En este caso, está seleccionando la opción para mostrarla en la .Top de la pantalla.

Si no tiene indexPath, puede usar:

 tableView.ScrollRectToVisible(new RectangleF(0, Ydisplacement, tableView.Width, tableView.Height), true);