如何在Swift中修复UITextView文本内容位置

时间:2019-03-29 16:42:35

标签: swift uitextview

我有UIView类,并且在这个类中有UITextView用作inputText

在第2行到第5行的textViewDidChange中,使用任意中间字符或添加文字,我会根据需要添加UITextView bounds.size.height

问题是在第3行和第5行中,第一行文本没有出现。 大约在其自身空间上方一行。 并且是从空白区域的底部创建的,无需滚动。

但是第四行中的文本具有确切的位置

class QuestionCell: UIView, UITextViewDelegate{

    var paragraph = UITextView()

    func setParagraph(){
        let frame = CGRect(x: 50,
                           y: 0,
                           width: forground.width-55,
                           height: forground.height)
        paragraph.frame = frame
        paragraph.isEditable = true
        paragraph.delegate = self
        // forground is some UIView in this View
        forground.addSubview(paragraph)
    }
    func textViewDidChange(_ textView: UITextView) {
       paragraph.bounds.size.height = paragraph.paragraphHeight
    }
}

extension UITextView{
    var paragraphHeight: CGFloat{
        let fixedWidth = self.width
        let newSize = self.sizeThatFits(CGSize.init(width: fixedWidth,
                                                         height: CGFloat(MAXFLOAT)))
        var newFrame = self.frame
        newFrame.size = CGSize.init(width: CGFloat(fmaxf(Float(newSize.width),
                                                         Float(fixedWidth))),
                                    height: newSize.height)
        return newSize.height
    }
}

1 个答案:

答案 0 :(得分:1)

在创建过程中,您需要指定:

  paragraph.isScrollEnabled = false

创建后,可以将其重新设置。