UITextView和单元格根据textview的内容dynamic更新高度?

我一直在自定义单元格内的UITextView问题。 除了我的问题,textView完美的工作。 我有UITextViewDelegate方法设置,所以当发生什么事情的TextView,我有这些方法连接。

我想知道如何让我的自定义单元格dynamic增加它的高度,因为用户键入。 一旦用户点击了文本视图的行的末尾,也让textview自动添加另一行。 我在网上search了一段时间,这个问题的大部分例子都是客观的。 没有太多的快速代码。 我将不胜感激任何帮助。

我有我的单元格连接在桌面视图文件中。

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根据用户input的内容来改变高度,这意味着自定义单元格和tableview将不得不更新。 想想iPhone上的清晰应用程序。 就像那样。 单元格随用户typesdynamic更新,高度增加,用户到达结尾时添加新行。 这是我的目标。

尽pipe我对开发并不陌生,但我从来没有真正意识到这一点。 任何帮助将非常感激。 由于我有我的自定义单元格在另一个文件中,我无法从tableview文件访问我的单元格元素。 我仍然是一个新手。 感谢您阅读此。

这也适用于ios 7

这进入你的tableviewcell

 protocol HeightForTextView { func heightOfTextView(height: CGFloat) } class TableViewCell: UITableViewCell { @IBOutlet weak var textView: UITextView! var delgate:HeightForTextView? override func awakeFromNib() { super.awakeFromNib() // Initialization code } func textViewDidChange(textView: UITextView) { var fixedWidth: CGFloat = textView.frame.size.width var newSize: CGSize = textView.sizeThatFits(CGSizeMake(fixedWidth, CGFloat.max)) if let iuDelegate = self.delgate { iuDelegate.heightOfTextView(newSize.height) } } } 

你的tableview控制器应该是

  class TableViewController: UITableViewController,HeightForTextView { var textViewHeight = CGFloat() //In your cell for row method set your your delegate override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TableViewCell cell.delgate = self return cell } //delegate method func heightOfTextView(height: CGFloat) { textViewHeight = height self.tableView.beginUpdates() self.tableView.endUpdates() } override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return textViewHeight + 70 } }