UITextView изменить высоту вместо прокрутки - PullRequest
6 голосов
/ 05 апреля 2010

По умолчанию contentView UITextView становится прокручиваемым, когда слишком много текста, чтобы поместиться в текстовое представление на основе его высоты.

Я бы хотел отключить это и вместо этого обновить высоту UITextView, чтобы она подходила по тексту. Причина, по которой я это делаю, заключается в том, что я добавляю UITextView как подпредставление UIScrollView, которое должно обрабатывать прокрутку, как в собственном приложении Mail (при вводе текста прокручивается весь вид, а не только текст .

Кто-нибудь получил идеи / сталкивался с той же проблемой раньше?

Ответы [ 2 ]

20 голосов
/ 06 апреля 2010

Это очень просто сделать так:

CGRect frame = textView.frame;

frame.size = textView.contentSize;

textView.frame = frame;

Это должно установить высоту textview, чтобы соответствующим образом соответствовать всему его содержимому.

9 голосов
/ 06 апреля 2010

Несколько небольших изменений:

-(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];
...