gpt4 book ai didi

ios - 为什么 beginUpdates 不调整 UITableView 中单元格的大小?

转载 作者:行者123 更新时间:2023-12-01 19:28:29 29 4
gpt4 key购买 nike

我有什么:

带有单元格的 UITableView。该单元格有一个 UITextView 作为 subview 。所有代表和数据源均已正确设置。单元格高度是从 heightForRow 等正确获取的。用户在 textView 中输入文本。

我想做的事情:

我希望单元格在用户键入时更新其高度,而不放弃 textView 作为第一响应者。 stackOverflow 上的许多帖子都说空的 beginUpdates/endUpdates 可以解决这个问题。

我尝试过的:

1-我在textViewDidChange内调用了beginUpdates和endUpdates(对于tableView)。什么都没发生。 (注意:所有代表均已正确设置)。

2-我什至在textViewDidEndEditing中调用了beginUpdates和endUpdates只是为了确保(看看它在textView辞去第一响应者后是否有效)。它有效(当 textView 不再担任firstResponder 时,单元格会调整大小)。

3-然后我尝试在textViewDidChange中重新加载数据。它可以工作,但它会放弃 textView 作为第一响应者(键盘在输入每个字符时消失)。

4-然后我尝试重新加载数据,然后直接告诉textView再次成为FirstResponder(以保持键盘抬起)。它可以工作,但这会导致 TextView 中的光标位置以及自动更正和退格键出现许多问题。

5-然后我尝试了 reloadData,然后当我希望键盘保持打开状态时在 textViewShouldEndEditing 中返回 NO,但由于某种原因,单元格不会更新其高度。

6-最后,我尝试了 reloadRowsAtIndexPaths 等,然后在 textViewShouldEndEditing 中返回 NO,但它给了我一个错误,说它无法删除拒绝 resignFirstResponder 的对象。

我还在textViewDidChange中尝试了reloadInputViews、setNeedsDisplay和setNeedsLayout等方法,但没有任何反应。

我的问题:

在我看来,#2 表明单元格无法更新其高度,而其 subview 之一是firstResponder。是这样吗?有这方面的任何文档吗(我找不到)?

为什么 beginUpdates/EndUpdates 不起作用?是否存在它不起作用的已知或常见情况?我的设置方式可能有问题吗?但调整大小与 #3 和 #4 完美配合(表明我所有的委托(delegate)方法等都设置正确)。

很抱歉问了一个很长的问题,但是除了我发布的想法之外,任何人都可以给出任何想法吗?我有一种感觉,这是我错过的一些非常愚蠢和明显的事情(像往常一样)......

顺便说一句,我同时使用 iOS 模拟器和 5.1 的实际 iPhone

最佳答案

它在我的小演示应用程序中完美运行。请注意,代码获取 textView 委托(delegate)消息,设置应用于每个单元格的 ivar 高度,然后调用开始/结束 - 每个字符按下时单元格都会变大:

- (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;
}

关于ios - 为什么 beginUpdates 不调整 UITableView 中单元格的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12291887/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com