【发布时间】:2015-07-17 22:21:15
【问题描述】:
我遇到了关于自定义单元格内的 UITextView 的问题。除了我的问题之外,textView 还可以完美运行。 我设置了 UITextViewDelegate 方法,因此当 textview 发生问题时,我连接了这些方法。
我想知道如何让我的自定义单元格在用户键入时动态增加它的高度。一旦用户点击 textview 行的末尾,也让 textview 自动添加另一行。 我在网上搜索了一段时间,这个问题的大部分例子都在objective c中。没有太多的快速代码。我将不胜感激任何帮助。
我已经将我的单元格连接到 tableview 文件中......
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: cellCustom = the_TableView.dequeueReusableCellWithIdentifier("cell") as! cellCustom
return cell
}
在自定义单元格文件中,我设置了代表...
func textViewDidChange(textView: UITextView) {
}
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
return true
}
我尝试过一些类似...
self.textview.sizeToFit()
self.the_TableView.rowHeight = UITableViewAutomaticDimension
self.the_TableView.estimatedRowHeight = 47
当我这样做时,textview 获取了所有文本,但在我辞去它的第一响应者并向上滚动以使单元格消失之前,它的大小没有增加。然后当单元格反弹回来时,它会更新。
我已经添加了所有的约束,并且该项目具有零风险或错误并且可以完美运行。
为了澄清,我希望 uitextview 根据用户在键入时键入的内容来更改高度,这意味着必须更新自定义单元格和表格视图。想想 iPhone 上的清晰应用程序。就像那样。当用户键入时,单元格会动态更新,高度增加,同时在用户到达末尾时添加新行。这就是我的目标。
尽管我对开发并不陌生,但我以前从未真正达到过开发这一点。任何帮助将不胜感激。因为我在另一个文件中有我的自定义单元格,所以我很难从 tableview 文件中访问我的单元格元素。估计还是新手。感谢您阅读本文。
【问题讨论】:
-
链接你的约束,textView 到单元格顶部,textView 到单元格底部,并将你的 textview 的高度约束设置为固定高度。然后添加你需要的另一个约束。然后在你更改 textView 的高度约束之后,您为当前单元格调用
layoutIfNeeded() -
@pandarencodemaster 感谢您的意见。我已经实现了我所有的约束。但是,添加高度约束会在调试器中引发多种风险。这些约束在所有设备中都能完美运行。另外,您能详细说明一下
layoutIfNeeded吗? -
如果你想让你的约束更新生效,你应该使用 layoutIfNeeded 让它们在你改变任何约束后立即生效。
-
@pandarencodemaster 这似乎不起作用。我已将它添加到单元格中,但 textview 只是继续获取数据并且不会增加高度。 textView 也链接到单元格。谢谢你的尝试。我很感激。
-
您是否在更改文本视图的高度后立即尝试
self.tableView.layoutIfNeeded()?
标签: ios iphone swift uitableview cell