如何更新UITableViewCell高度,因为输入到UITextView中的文本

时间:2015-12-09 18:26:53

标签: ios uitableview uitextview uitextinput

我有不同的examples我们可以根据实际上对我有用的UITableViewCell增长来更新UITextView高度。我面临的问题是,我在UITextView内的UITableViewCell下方有更多子视图。这样,单元格的高度会更新,但子视图的位置会保持固定,从而导致UITextView和子视图重叠。 简而言之,我没有使用自动布局 我该如何解决这个问题? 这三个屏幕截图有助于理解我的问题:

1。在显示TextView之前:

enter image description here

2。显示TextView后:

enter image description here

第3。输入文字后:

enter image description here

3 个答案:

答案 0 :(得分:3)

我假设您正在为此单元格使用自动布局(但我们可以使用代码示例或Xcode截图来更具体地帮助您)。如果您使用的是自动布局,则需要确保:

  1. UITextView与单元格下面的其他UIView子视图之间存在约束
  2. 其他UIView子视图最终被限制在单元格的底部。

答案 1 :(得分:3)

由于UITableViewCell被重用,您会发现在向contentView添加对象时,这些对象也将被重用而不被删除,从而导致重叠的子视图。解决这个问题的方法是使用以下代码启动cellForRowAtIndexPath

 static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    for (UIView * view in [cell.contentView subviews]) {
//        clears the cell before reusing
        [view removeFromSuperview];
    }

希望这有帮助。

答案 2 :(得分:2)

您使用的是自动布局吗?我之前用UITableViewCells做了好几次,虽然它主要是用UILabel而不是UITextView。

您的问题可能会通过自动布局解决。您将所有子视图(在UITableViewCell内)相对于彼此进行布局。如果一个视图(即UITextView)改变大小,则其他视图将相对于该视图进行调整。以下是一些有用的链接。

这不是特定于UITableViewCell,而是有很多各种场景的好例子。 斯坦福大学开发iOS 7应用程序:第9讲 - 动画和Autolayout https://www.youtube.com/watch?v=r1sc7NI6-wo