为此我研究了很多教程但我无法找到解决我的问题的方法
我想在表格单元格上显示 textView。并且 Cell 应该随着用户在 textView 中输入的文本展开。
我发现有两种方法可以做到这一点
第一:-
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 30;
func textViewDidChange(_ textView: UITextView!, for indexPath: IndexPath!) {
self.presenter?.valueChanged(section: indexPath.section, value: textView.text)
isChanged = true
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
Make the table view to adjust height automatically. But in this case when there is no data to display in cellForRow at index path then textview height is automatically adjusted to 0 and i was not able to select the text view.
第二种方式:-
删除自动尺寸码
// MARK: TextViewTableViewCellDelegate
func textViewDidChange(_ textView: UITextView!, for indexPath: IndexPath!) {
self.presenter?.valueChanged(section: indexPath.section, value: textView.text)
isChanged = true
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
var ret = DEFAULT_CELL_HEIGHT
if let cell = tableView.dequeueReusableCell(withIdentifier: SECTION_TYPE_FREEFORM) as? TextViewTableViewCell {
cell.textView.text = self.presenter?.cellBody(section: indexPath.section)
cell.textView.sizeToFit()
let width = self.view.frame.size.width - HORIZONTAL_PADDING
let calculatedHeight = cell.textView.sizeThatFits(CGSize(width: width, height: CGFloat(MAXFLOAT))).height + 10
if(calculatedHeight > ret) {
ret = calculatedHeight
}
}
return ret
}
但在此我检查了然后我在 heightForRowAtIndexPath 方法中创建单元格,然后 textview 高度不合适。并且自动调整高度并不完全有效。
请提出相同的解决方案。提前致谢。