在我的iOS应用中,我有一个UITextView在tableview单元格中。
当用户输入的文本框所需的框架超过当前单元格高度时,UITextView和单元格高度会扩展。
为了实现上述功能,我调用[tableView beginUpdates],然后调用[tableView endUpdates]重新加载单元格高度。
上述操作会导致重复的部分标题重叠在扩展的单元格上。
有没有一种方法可以在不调用[tableView reloadData]的情况下解决这个问题?
以下是一些相关代码:
当文本发生更改时,我验证文本是否适合当前文本视图,如果不适合,则将单元格扩展到新高度:
重要提示:我正在使用自定义部分标题,这使我的问题类似于此处提到的一个问题: UITableView自定义节标题,重复问题 然而,我不能使用上述问题的解决方法,因为我无法在用户输入文本时重新加载tableView。
当用户输入的文本框所需的框架超过当前单元格高度时,UITextView和单元格高度会扩展。
为了实现上述功能,我调用[tableView beginUpdates],然后调用[tableView endUpdates]重新加载单元格高度。
上述操作会导致重复的部分标题重叠在扩展的单元格上。
有没有一种方法可以在不调用[tableView reloadData]的情况下解决这个问题?
以下是一些相关代码:
当文本发生更改时,我验证文本是否适合当前文本视图,如果不适合,则将单元格扩展到新高度:
- (void)textViewDidChange:(UITextView *)textView {
CGFloat oldTextViewHeight = [(NSNumber *)[self.cachedTextViewHeightsDictionary objectForKey:indexPath] floatValue];
CGFloat newTextViewHeight = [textView sizeThatFits:CGSizeMake(textView.frame.size.width, CGFLOAT_MAX)].height + CELL_HEIGHT_PADDING;
if (newTextViewHeight > oldTextViewHeight ||
(newTextViewHeight != oldTextViewHeight && oldTextViewHeight != TEXTVIEW_CELL_TEXTVIEW_HEIGHT)) {
[self reloadRowHeights];
}
}
- (void)reloadRowHeights {
// This will cause an animated update of the height of the UITableViewCell
[self.tableView beginUpdates];
[self.tableView endUpdates];
}
重要提示:我正在使用自定义部分标题,这使我的问题类似于此处提到的一个问题: UITableView自定义节标题,重复问题 然而,我不能使用上述问题的解决方法,因为我无法在用户输入文本时重新加载tableView。
beginUpdates/endUpdates
调用之间调用了[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone:]
会发生什么? - Ozgur Vatansever