我一直遇到有关自定义单元格内的 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
}
在自定义单元格文件中,我设置了委托(delegate)...
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 获取了所有文本,但直到我辞去它的第一响应者并向上滚动以使单元格消失之前, TextView 都没有增加大小。然后,当细胞反弹回来时,它会更新。
我已经添加了所有约束,该项目的风险或错误为零,并且运行完美。
澄清一下,我希望 uitextview 根据用户键入的内容更改高度,这意味着自定义单元格和 tableview 必须更新。想想 iPhone 上的 clear 应用程序。就像那样。单元格随着用户键入而动态更新,高度增加,同时在用户到达末尾时添加新行。这就是我的目标。
虽然我对开发并不陌生,但我以前从未真正达到过开发的这一点。任何帮助将不胜感激。因为我在另一个文件中有我的自定义单元格,所以我很难从 tableview 文件访问我的单元格元素。估计还是菜鸟。感谢您阅读本文。
最佳答案
这也适用于 ios 7
这进入你的tableviewcell
protocol HeightForTextView {
func heightOfTextView(height: CGFloat)
}
class TableViewCell: UITableViewCell {
@IBOutlet weak var textView: UITextView!
weak 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)
}
}
}
your tableview controller should be
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
}
}
关于ios - UITextView 和单元格根据 textview 的内容动态更新高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31485558/