【发布时间】:2018-10-24 19:59:43
【问题描述】:
我在 TableView 中有一个动态单元格,它会根据 TextView 中的信息自动调整大小。这发生在 tableView: didSelectRowAt 函数中。简化版如下:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
guard let cell = tableView.cellForRow(at: indexPath) as? cell else { return }
if cell.textViewOutlet.attributedText.length != 12 {
cell.textViewOutlet.attributedText = NSMutableAttributedString(
string: "Expand:\n\n\n " + String(indexPath.row)
)
} else {
cell.textViewOutlet.attributedText = NSMutableAttributedString(
string: "Cell: " + String(indexPath.row)
)
}
在图像中,单元格 1 被展开,单元格 0 和 2 被压缩。通过此设置,我可以让用户通过选择单元格在展开和压缩单元格(和消息)之间切换。
我的问题是我想让用户能够编辑文本。当然,当用户点击编辑时,“didSelectRowAt”函数就进入了。
区分编辑操作和展开操作的最佳方法是什么?我可以使动作成为多点触控或长点触控动作吗?
一个限制是,在 textView 中可以使用的任何触摸方法也必须在应用程序中没有这些扩展功能的其他单元格中使用。因此,如果我可以使用另一种技术来扩展它会更干净。
【问题讨论】:
标签: swift uitableview uitextview