UITextView автопрокрутка до последней строки - PullRequest
3 голосов
/ 27 ноября 2009

Когда вы пишете в UITextView больше текста, чем может поместиться внутри него, текст прокручивается вверх, и курсор часто помещает себя на одну или две строки выше нижней строки представления. Это немного расстраивает, поскольку я хочу, чтобы мое приложение эффективно использовало всю высоту текстового представления.

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

Я видел несколько похожих вопросов здесь , здесь и здесь . Однако я еще не нашел правильного решения.

Спасибо

Ответы [ 6 ]

8 голосов
/ 17 декабря 2009

У меня немного другая реализация (я хочу отключить прокрутку), но мне также пришлось остановить выскакивание курсора из моего UITextView. Для этого я реализовал нулевой scrollRectToVisible в своем подклассе UITextView. Как это:

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
{
// do nothing. This fixes the cursor jumping above the field defect.
}
2 голосов
/ 23 января 2011

отличное решение в подклассе UITextView добавить строки

-(void) setContentOffset:(CGPoint)contentOffset {
    [self setContentInset:UIEdgeInsetsZero];
    [super setContentOffset:contentOffset];
}

Это работа!

1 голос
/ 18 марта 2013

используйте это

NSRange myRange=NSMakeRange(outPutTextView.text.length, 0);

[outPutTextView scrollRangeToVisible:myRange];
0 голосов
/ 04 июня 2013

У меня есть последняя строка по setframe:

  1. Вы можете установить кадр примерно до высоты строки
  2. Когда вы редактируете, в - (BOOL) textView:shouldChangeTextInRange:replacementText:, используйте scrollRangeToVisible:, аргумент selectedRange
  3. Когда вы закончите редактирование, установите кадр в исходный размер
0 голосов
/ 16 марта 2010

Я считаю, что свойство 'contentOffset' также можно использовать ...

0 голосов
/ 27 ноября 2009

если я правильно понял, вы можете использовать

[textView setScrollEnabled:NO];

для отключения прокрутки. не печатать, когда курсор достиг нижнего поля ... возможно, это не очень хорошее решение, но вы можете добавить некоторое пороговое значение (максимум символов в [textView text]) и вернуть NO в

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

метод делегирования UITextView, если [[textView text] length] > maxCharacters.

...