UITextView内容在增加高度的同时改变位置

时间:2014-10-29 07:07:12

标签: ios swift uitextview uitextviewdelegate ios8.1

我正在尝试使用UITextView委托调用根据内容的大小更改textViewDidChange的高度。但是在输入第一行时文本会被推高一点,并在输入下一行时将其更正为旧位置。对于添加的每个备用行,这将继续重复。

func textViewDidChange(textView: UITextView!) {
    var computedHeightDifference = textView.contentSize.height - textView.frame.size.height
    if(computedHeightDifference != 0){
        textView.frame.size.height = textView.contentSize.height
    }

}

我尝试使用textView.sizeToFit()而不是完整的块,但是在添加每一行时文本视图会闪烁(在电话应用程序中添加新联系人时,可以在备注字段中注意到相同的行为。

我已在GitHub上传了完整的代码 While entering first line While adding another line

1 个答案:

答案 0 :(得分:3)

你没有设置足够大的高度。您需要考虑文本容器的插入。

这样做:

func textViewDidChange(textView: UITextView!) {
    var computedHeightDifference = textView.contentSize.height - (textView.frame.size.height + textView.textContainerInset.top + textView.textContainerInset.bottom)
    if(computedHeightDifference != 0){
        textView.frame.size.height = textView.contentSize.height + textView.textContainerInset.top + textView.textContainerInset.bottom
    }

}