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

Posted

技术标签:

【中文标题】UITextView 内容在增加高度时改变位置【英文标题】:UITextView content changing position while increasing height 【发布时间】:2014-10-29 07:07:11 【问题描述】:

我正在尝试使用textViewDidChange 委托调用根据其内容的大小更改UITextView 的高度。但是在输入第一行时文本会向上推一点,并在输入下一行时更正到旧位置,对于添加的每一行交替重复。

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

【问题讨论】:

【参考方案1】:

您设置的高度不够大。您需要考虑文本容器的插图。

这样做:

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
    


【讨论】:

这有帮助。谢谢!我只看ContentInset 没注意到TextContainerInset

以上是关于UITextView 内容在增加高度时改变位置的主要内容,如果未能解决你的问题,请参考以下文章

SWIFT - 改变 UITextView 的高度,xcode 6 GM

无法控制 UITextView 的宽度

UITextView 根据内容动态改变高度?

iOS Swift - 动态增加 UITextView 和父 UIView 的高度

NavigationBar 半透明改变 UITextView 文字位置

iOS:解决UITextView自适应高度粘贴大量文字导致显示不全的问题