UITextView更改高度而不是滚动

时间:2010-04-05 19:45:59

标签: iphone uiscrollview uitextview subview

默认情况下,当文本视图中的文本太多时,UITextView的contentView会变得可滚动。

我想禁用它,而是更新UITextView的高度以适应文本。我这样做的原因是因为我将UITextView添加为UIScrollView的子视图,它应该处理滚动,就像在本机Mail应用程序中一样(当你输入文本时,整个视图向上滚动,而不仅仅是textview

任何人都有一些想法/之前遇到过同样的问题?

2 个答案:

答案 0 :(得分:20)

这样做非常简单:

CGRect frame = textView.frame;

frame.size = textView.contentSize;

textView.frame = frame;

这应该设置textview的高度以适合其所有内容。

答案 1 :(得分:9)

几乎没有什么变化:

-(void)textViewDidChange:(UITextView *)textView {

    CGFloat fontHeight = (textView.font.ascender - textView.font.descender) + 1;

    CGRect newTextFrame = textView.frame;
    newTextFrame.size = textView.contentSize;
    newTextFrame.size.height = newTextFrame.size.height + fontHeight;
    textView.frame = newTextFrame;
}

当拼写错误时,添加字体高度为自动更正框提供了空间。

UITextView也应该设置为不滚动:

[aTextView setScrollEnabled:NO];