IOS4: не может программно прокручиваться до нижней части UITextView

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

//TextView is a UITextView 

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

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

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

Ответы

Ответ 1

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

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

Ответ 2

Ответ не помог мне, но после того, как вы будете использовать для 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];
}

Ответ 3

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

    logObject.layoutManager.ensureLayoutForTextContainer(logObject.textContainer)

    logObject.setContentOffset(CGPointMake(0.0, logObject.contentSize.height), animated:false)

Ответ 4

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

[_myTextView.layoutManager ensureLayoutForTextContainer:_myTextView.textContainer];
[_myTextView scrollRangeToVisible:NSMakeRange([_myTextView.text length], 0)];

Ответ 5

Это то, что я использую, отлично работает. Функция 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 мой взгляд не прокручивается до абсолютного дна.