1
votes

I have a UITableView with rows of dynamic heights, many of which contain UITextViews. When the user starts typing in one of the textviews, I have the cells grow to accommodate the size of the textview content using the begin/endUpdates method. Using this method allows the cells to resize without losing keyboard focus on the textview, an important aspect of my app.

However, when I call begin/endUpdates, it reloads the heights for every cell that I have, and I was wondering if there was any way to only recompute the height of a cell at a particular indexPath while the user is typing. I want to do this because my heights for the other cells are expensive to compute as they have dynamic content. I know I could write some height caching code, but I was wondering if there was any method to only recompute the height of a specific cell or set of cells in a UITableView without losing keyboard focus / reloading the data content of that row?

I am using ios8, but will take an ios7/8 solutions.

2
did you get it exactly which you wanted to implement?Akshay
A better idea would be to show a "dedicated editing screen" . Just like the one in Facebook for posting .Martin Jacob

2 Answers

1
votes

Create of array of NSIndexPath's. If you have just one indexPath, add just this to the array, and use this method:

 [self.tableView reloadRowsAtIndexPaths:[NSArray *array] withRowAnimation:UITableViewRowAnimationAutomatic];

but i think this method, will also hide the keyboard, never tried.

1
votes

Doesn't seem like this is possible to do for only a single row. I ended up building a caching system for row heights so that at least it is faster to return heights for all cells.