iOS4: невозможно программно прокрутить до нижней части UITextView - PullRequest
15 голосов
/ 03 июля 2010

До того, как я использовал этот метод ....

//TextView is a UITextView 

[TextView scrollRangeToVisible:NSMakeRange([TextView length], 0)];

... который программно прокручивал бы до конца UITextView, но, похоже, он не работает в iOS 4.0. Есть ли способ программной прокрутки до конца UITextView без изменения возможности редактирования или вставки точки (где пользователь может нажать на UITextView и показать клавиатуру)?

Кроме того, мне нужно назначить владельца файла делегатом? Это имеет значение?

Ответы [ 5 ]

37 голосов
/ 24 февраля 2011

UITextView не имеет свойства длины. Следующий код работает хорошо для моей среды.

[TextView scrollRangeToVisible:NSMakeRange([TextView.text length], 0)];
6 голосов
/ 14 ноября 2012

Ответ не сработал для меня, но то, что вы используете для TableView, работает отлично. Просто убедитесь, что ваш UITextView называется textView.

if (textView.contentSize.height > textView.frame.size.height)
{
    CGPoint offset = CGPointMake(0, textView.contentSize.height - textView.frame.size.height);
    [self.textView setContentOffset:offset animated:YES];
}
4 голосов
/ 14 октября 2014

В IOS8, вызовУказатьLayoutForTextContainer, кажется, заставляет это решение работать. У меня ушло почти час, чтобы отследить это.

    logObject.layoutManager.ensureLayoutForTextContainer(logObject.textContainer)

    logObject.setContentOffset(CGPointMake(0.0, logObject.contentSize.height), animated:false)
1 голос
/ 09 сентября 2015

Это сработало для меня:

[_myTextView.layoutManager ensureLayoutForTextContainer:_myTextView.textContainer];
[_myTextView scrollRangeToVisible:NSMakeRange([_myTextView.text length], 0)];
0 голосов
/ 17 ноября 2012

Это то, что я использую, оно отлично работает. shouldScrollTextToBottom устанавливается вызывающим представлением (1 контроллер представления ниже в стеке вызовов)

(void)viewDidAppear:(BOOL)animated 
{ // scroll to bottom if required
  if(shouldScrollTextToBottom)
    [txtMyTextView scrollRectToVisible:CGRectMake(0, 0, txtMyTextView.frame.size.width, txtMyTextView.frame.size.height * 6) animated:YES];  
}

6 - произвольно большое число, которое должно быть кратным высоте UITextView. Я обнаружил, что со значением 5 мое представление не прокручивается до абсолютного дна.

...