首页 > 解决方案 > 添加文本和禁用滚动时如何使 UITextView 字段扩展?

问题描述

我在 tableView 单元格中使用 UITextView 来保存禁用滚动的不同大小的文本内容。

为了自动调整 UITextView 的大小,我使用了自动布局将其固定到布局,还添加了此方法来调整高度:

 override func viewWillAppear(_ animated: Bool) {
    tableView.estimatedRowHeight = 50
    tableView.rowHeight = UITableViewAutomaticDimension
 }

这在初始视图上正常工作 - 当内容首次加载时。但是,我还希望用户能够在点击内容时编辑文本(类似于 Apple 提醒应用程序)。这在一个限制下可以正常工作: UITextView 不会随着内容的增长而扩展。

如何使 UITextView 在编辑期间扩展而不滚动?

新细节:这是当前设置的屏幕截图。

textView 设置截图

根据以下 Matt 的建议,我创建了以下子类。

class MyTextView: UITextView {

        @IBOutlet var heightConstraint : NSLayoutConstraint?
        override func awakeFromNib() {
            super.awakeFromNib()
            self.heightConstraint?.isActive = false
        }
}

我不得不修改强制展开以避免致命错误。

标签: iosxcode

解决方案


如何使 UITextView 在编辑期间扩展而不滚动

自定大小的文本视图非常简单;对于没有高度限制的非滚动文本视图,它是默认值。在此示例中,我添加了一些代码来删除现有的高度约束,尽管您可以在情节提要中通过指示高度约束是一个占位符来执行此操作:

class MyTextView : UITextView {
    @IBOutlet var heightConstraint : NSLayoutConstraint!
    override func awakeFromNib() {
        super.awakeFromNib()
        self.heightConstraint.isActive = false
    }
}

结果截图:

在此处输入图像描述

如果您随后对表格视图进行批量更新,并假设单元格的其他内部约束是正确的,那么单元格也将被重新测量(但我没有在示例中演示这一点)。


推荐阅读