更改UITableView行高而不closures键盘
我有一个UITableViewCell里面的TextView。 TextView中的文本可以在那里编辑。
TextView垂直增长和缩小,取决于文本包含的行数。 到目前为止,我还没有find一个可能让包含TextView的行dynamic增长和缩小。
[tableView reloadData];
要么
[tableView reloadRowsAtIndexPaths: withRowAnimation:];
不工作,因为他们每次改变都会closures键盘。
有没有办法改变UITableView中的单个行的高度而不closures键盘?
是的,您可以在input时调整行高。 这是没有logging,它无视原因,但你需要做的是在tableView.rowHeight(或有heightForRowAtIndexPath:准备好计算新的高度)中设置新值,然后执行此操作:
[tableView beginUpdates]; // updates the row heights ... [tableView endUpdates]; // ... nothing needed in between
reloadRowsAtIndexPaths单元格更改内存值后,如果您在reloadRowsAtIndexPaths之后调用becomeFirstResponder,则尝试将firstResponder设置为不存在的旧单元格(成为FirstResponder返回false和键盘出口)。
解决方法是再次调用cellForRowAtIndexPath为了获得重新加载的单元格的新的内存值,然后调用becomeFirstResponder到该单元格。
任务是调用没有单元重用的行高重新计算(保存当前的响应者)。
可以调用moveRowAtIndexPath:toIndexPath:
对于高度变化后的相同indexPath
- (void)textInputTableView:(UITableView *)tableView cellHeightDidChangeForIndexPath:(NSIndexPath *)indexPath { [tableView moveRowAtIndexPath:indexPath toIndexPath:indexPath]; }