为此,我学习了许多教程,但没有找到解决问题的方法
我想在表格单元格上显示textView。单元格应使用用户在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
}
但在这里,我检查了一下,然后我在heightforrowatinexpath方法中创建了单元格,然后textview高度不合适。而且,自动调整高度并不完全有效。
请提出同样的解决方案。提前谢谢。