【发布时间】:2015-10-14 05:46:20
【问题描述】:
我有一个包含自定义单元格的 UITableViewController。每个单元格都是使用 nib 创建的,并包含一个不可滚动的 UITextView。我在每个单元格内添加了约束,以便单元格使其高度适应 UITextView 的内容。所以最初我的控制器看起来像这样:
现在我希望当用户在单元格中键入内容时,其内容会自动适应。这个问题已经被问过很多次了,尤其是this 或the second answer here。因此,我在我的代码中编写了以下委托:
- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text {
[self.tableView beginUpdates];
[self.tableView endUpdates];
return YES;
}
但是它会导致以下奇怪的行为:所有约束都被忽略并且所有单元格高度都崩溃到最小值。见下图:
如果我向下和向上滚动 tableView 以强制调用 cellForRowAtIndexPath,我会恢复单元格的正确高度:
请注意,我没有实现 heightForRowAtIndexPath,因为我希望 autoLayout 能够解决这个问题。
有人可以告诉我我做错了什么或在这里帮助我吗?非常感谢!
【问题讨论】:
-
在此链接上查看我的答案(无需自动布局):Resize and move UITableViewCell smoothly without dismissing keyboard
-
这里有一个更好更简单的way 自动布局。 .
标签: ios uitableview cocoa-touch autolayout uitextview