当前位置: 首页 > 面试题库 >

UITextView和单元格根据textview的内容动态更新高度?

穆歌者
2023-03-14
问题内容

我在自定义单元格中遇到有关UITextView的问题。除了我的问题,textView的工作原理也很完美。我已经设置了UITextViewDelegate方法,所以当textview发生问题时,我已经连接了那些方法。

我想知道如何让我的自定义单元随着用户的输入而动态增加其高度。一旦用户点击了textview的行尾,也要让textview自动添加另一行。我已经在网上搜索了一段时间,该问题的大多数示例都在目标c中。没有太多快速的代码。我将不胜感激任何帮助。

我已经将自己的单元格连接到了tableview文件中。

     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

      let cell: cellCustom =  the_TableView.dequeueReusableCellWithIdentifier("cell") as! cellCustom

        return cell
 }

在自定义单元文件中,我设置了代表…

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接受了所有文本,但是直到我辞职成为它的第一响应者并向上滚动以使该单元格消失后才增加大小。然后,当单元反弹回来时,它会更新。

我已经添加了所有约束,该项目的风险或错误为零,并且运行良好。

为了澄清,我希望uitextview根据用户在键入内容时键入的内容来更改高度,这意味着自定义单元格和tableview必须进行更新。想想iPhone上清晰的应用程序。就像那样。单元随用户键入而动态更新,高度随着用户到达终点而增加新行,同时增加新行。这就是我要达到的目标。

尽管我对开发无论如何都不陌生,但我之前从未真正接触到这一点。任何帮助将不胜感激。由于我的自定义单元格位于另一个文件中,因此很难从tableview文件访问单元格元素。我猜还是个新手。感谢您阅读本文。


问题答案:

这也适用于ios 7

这进入你的tableviewcell

protocol HeightForTextView {
    func heightOfTextView(height: CGFloat)

}

class TableViewCell: UITableViewCell {

    @IBOutlet weak var textView: UITextView!

    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)
        }


    }

}

您的tableview控制器应为

 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
    }

    }


 类似资料:
  • 问题内容: 我有一个由用户创建的单元格调用的表视图。每个单元都有文本视图。我想通过“文本视图”的内容更改单元格的高度。这是我尝试的: 问题答案: 绑定您与来自四面八方的使用边际约束。( 前置,顶部和底部的约束 ) 禁用textView滚动 在 viewDidLoad()中 添加以下内容。 这将使您的单元格大小根据您的textview内容大小。 看一下结果: 您无需编写 heightForRowAt

  • 我有用自定义单元格(继承自)填充的用户界面视图,每个单元格都包含一个,该视图根据其内容自动调整大小。事情是这样的,如何根据内容(可变视图)更改 单元格的高度。 该解决方案必须是动态的,因为用于填充< code>UIWebViews的HTML是从不断变化的提要中解析的。 我觉得我需要使用委托方法 中更改单元格的高度吗? 任何帮助都是伟大的。谢谢 两年多前我问过这个问题。通过介绍自动布局,可以找到iO

  • 我有一个预定义的excel文件,这是一种形式,其中大部分的信息已经提到,但我必须只输入姓名,地址等细节从我的应用程序用Java。 我可以存储单元格(如A12、B20等),并使用Apache POI库和方法轻松地更新这些单元格。但我希望它是动态的。例如,如果用户将名称单元格从A12更改为B12,Java代码不应该被修改。

  • 我是swift新手,正在从事Swift 3.0中的一个项目,其中我有一个包含三个自定义单元格的UITableView。在第一个中,我只有一个图像、按钮和标签。在第二个,我有一个图像加上标签以及可扩展和可折叠的标题。因此,第二个单元格有三个不同的部分。最后,第三个也只包含一个标签。在第一个单元格中,UILabel被设置在包含一个人的描述的图像下面(已经设置了约束)。我的要求是只对第一个单元格根据描述

  • 我在细胞上有两个标签。如果标签只显示一行文本,那么单元格看起来很好。但是如果有更多的文本,并且如果标签上的行被包裹起来,那么标签/文本就会离开单元格。附加图像。 我当前的代码: 解决方案我试图修复它: 这就是解决方案的外观。如何根据单元格的内容更新单元格的高度?