UITextView change height instead of scroll

时间秒杀一切 提交于 2019-11-27 14:10:49

问题


By default, the UITextView's contentView becomes scrollable when there is too much text to fit into the textview based on it's height.

I'd like to disable this and instead, update the height of the UITextView to fit in the text. The reason I'm doing this is because I'm adding the UITextView as a subview of a UIScrollView which should handle the scrolling, much like in the native Mail app (when you enter text, the whole view scrolls up, not just the textview.

Anyone got some ideas / has run into the same problem before?


回答1:


It is very simply done like this:

CGRect frame = textView.frame;

frame.size = textView.contentSize;

textView.frame = frame;

This should set the height of the textview to appropriately fit all of its content.




回答2:


Few little changes:

-(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;
}

Adding the font height gives room for the autocorrection box when you spell something incorrectly.

The UITextView should also be set to not scroll:

[aTextView setScrollEnabled:NO];


来源:https://stackoverflow.com/questions/2580716/uitextview-change-height-instead-of-scroll

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!