¿Por qué beginUpdates no cambia el tamaño de mi celda en UITableView?

lo que tengo:

una UITableView con una celda. Esta celda tiene un UITextView como subvista. Todos los delegates y fonts de datos están configurados correctamente. La altura de la celda se obtiene correctamente de heightForRow, etc. El usuario ingresa text en textView.

lo que trato de hacer:

Quiero que la celda actualice su altura a medida que el usuario escribe SIN renunciar a textView como primer respondedor. Muchas publicaciones en stackOverflow dicen que un startUpdates / endUpdates vacío funciona para esto.

Lo que probé:

1- Llamé a beginUpdates y endUpdates (para tableView) dentro de textViewDidChange. No pasó nada. (nota: todos los delegates están configurados correctamente).

2- Incluso llamé beginUpdates y endUpdates dentro de textViewDidEndEditing solo para asegurarme (para ver si funciona después de que textView renuncia como primer respondedor). Funciona (la celda cambia de tamaño cuando el textView renuncia como primerResponedor).

3- Luego intenté reloadData dentro de textViewDidChange. Funciona, excepto que renuncia al text View como primer respondedor (el keyboard desaparece en cada carácter escrito).

4- Luego intenté reloadData y luego le dije directamente a textView que volviera a ser FirstResponder nuevamente (para mantener el keyboard levantado). Funciona, pero esto conlleva muchos problemas con la position del cursor, la autocorrección y el retroceso en textView.

5- Luego intenté reloadData, y luego regresé NO en textViewShouldEndEditing cuando quería que el keyboard permaneciera encendido, pero por alguna razón, la celda no actualizaría su altura.

6- Finalmente, intenté reloadRowsAtIndexPaths, etc. y luego devolví NO en textViewShouldEndEditing, pero me dio un error que decía que no puede eliminar un object que se niega a resignFirstResponder.

También probé methods como reloadInputViews y setNeedsDisplay y setNeedsLayout, etc. dentro de textViewDidChange, pero no sucede nada.

Mi pregunta:

Me parece que el # 2 sugiere que una celda no puede actualizar su altura mientras que una de sus subvistas es un primer respondedor. ¿Es ese el caso? ¿Hay alguna documentation sobre esto (no pude encontrar ninguna)?

¿Por qué beginUpdates / EndUpdates no funciona? ¿Hay casos conocidos o comunes en los que no funciona? ¿Podría haber algún problema con la forma en que preparo las cosas? Pero el cambio de tamaño funciona perfectamente con # 3 y # 4 (lo que indica que todos mis methods de delegado, etc. están configurados correctamente).

Perdón por la larga pregunta, pero ¿puede alguien dar ideas además de las que publiqué? Tengo la sensación de que es algo MUY tonto y obvio que me falta (como de costumbre) …

Por cierto, estoy usando tanto el simulador de iOS como un iPhone real con 5.1

Funciona perfectamente en mi pequeña aplicación de demostración. Tenga en count que el código recibe el post delegado de textView, establece una altura ivar que se aplica a cada celda, luego comienza / finaliza las llamadas: todas las celdas se hacen más grandes en cada carácter. Presione:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"Asked for Height"); return height; } - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { NSLog(@"Text"); height += 10; [self.tableView beginUpdates]; [self.tableView endUpdates]; return YES; }