Как прокручивать просмотр вверх при добавлении новой строки в экземпляр UITextView?

#iphone #ios #ios4 #uiscrollview #uitextview

#iPhone #iOS #ios4 #uiscrollview #uitextview

Вопрос:

Я успешно настроил вид прокрутки, который перемещает некоторые текстовые поля и текстовый вид вверх, если они скрыты клавиатурой. Однако, когда текстовое представление получило некоторый текст, который выходит за пределы первой строки, следующие строки явно скрыты клавиатурой. Итак, я ищу трюк для перемещения вверх / вниз по представлению каждый раз, когда новая строка добавляется / удаляется в / из экземпляра UITextView.

Спасибо за помощь,

Стефан

Ответ №1:

Вы можете реализовать

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

метод в вашем делегате UITextView, подсчитайте количество новых строк в тексте textviews, подсчитайте, как далеко вам нужно прокручивать, и прокрутите. (Этот метод вызывается каждый раз, когда пользователь вводит символ.)

В качестве альтернативы вы можете пойти более простым путем и прокрутить достаточно далеко, чтобы отобразить всю вашу UITextView . Если пользователь вводит больше, чем помещается в textview, textview начнет прокручиваться автоматически.

Ответ №2:

Используйте scrollRectToVisible:animated: или setContentOffset:animated: — в вашем случае, первое, как в:

 [scrollView scrollRectToVisible:textField.frame animated:YES];
  

Вам также может потребоваться прокрутить содержимое текстового поля до видимого, но я думаю, что это должно произойти автоматически.

Ответ №3:

Итак, если вы скомпилируете предыдущие ответы :

Просто установите свой textView.delegate as self и свой viewController as <UITextViewDelegate> и :

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    [textView scrollRangeToVisible:range];
    return YES;
}