【问题标题】:How to update UITableViewCell height because of text entered into UITextView由于输入 UITextView 的文本,如何更新 UITableViewCell 高度
【发布时间】:2016-03-15 04:04:56
【问题描述】:

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

1.在显示 TextView 之前:

2。显示 TextView 后:

3.输入文字后:

【问题讨论】:

  • 在您的表格视图单元格中,将您的所有子视图(保持固定)放在一个视图中,当您的 UITextview 高度更改(增加/减少)时将该视图的 y 位置设置在 UITextview 下方。
  • 你使用什么语言?

标签: ios uitableview uitextview uitextinput


【解决方案1】:

因为UITableViewCells被复用了,你会发现在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】:

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

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

    【讨论】:

    • 我没有使用自动布局。如果我现在改变它,那将是一个巨大的变化。
    • 您需要使用自动布局来调整间距。
    【解决方案3】:

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

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

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

    【讨论】:

    • 我没有使用自动布局。如果我现在改变它,那将是一个巨大的变化。
    • 我了解某些视图可能难以切换到自动布局。请记住,您可以将弹簧和支柱与自动布局一起使用。它不必严格地是一个或另一个。您还可以尝试实现一个自定义 UIView (.xib),它执行自动布局,但它是使用 spring 和 struts 来隔离您如何进行布局的视图的子视图。
    • 我正在从 cellForRowAtIndex 中的代码创建 UITableViewCell 子视图,而不是通过 xib。
    • 我这样做是因为单元格的 UI 依赖于服务器数据。
    猜你喜欢
    • 1970-01-01
    • 2014-05-19
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2015-04-20
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多