我正在尝试使用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上传了完整的代码
答案 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
}
}