UITextView更改高度而不是滚动

Tom*_*ing 6 iphone subview uiscrollview uitextview

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

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

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

jha*_*erg 20

这样做非常简单:

CGRect frame = textView.frame;

frame.size = textView.contentSize;

textView.frame = frame;
Run Code Online (Sandbox Code Playgroud)

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


Tom*_*ing 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;
}
Run Code Online (Sandbox Code Playgroud)

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

UITextView也应设置为不滚动:

[aTextView setScrollEnabled:NO];
Run Code Online (Sandbox Code Playgroud)