Так как iOS 7, a UITextView
не прокручивает автоматически курсор, так как пользователь вводит текст, который перетекает в новую строку. Этот вопрос хорошо документирован на SO и в других местах. Для меня проблема все еще присутствует в iOS 7.1. Что я делаю неправильно?
Я установил Xcode 5.1 и настроил iOS 7.1. Я использую Auto Layout.
Вот как я размещаю содержимое текстового представления над клавиатурой:
- (void)keyboardUp:(NSNotification *)notification
{
NSDictionary *info = [notification userInfo];
CGRect keyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
keyboardRect = [self.view convertRect:keyboardRect fromView:nil];
UIEdgeInsets contentInset = self.textView.contentInset;
contentInset.bottom = keyboardRect.size.height;
self.textView.contentInset = contentInset;
}
Что я пробовал: Я пробовал много решений, отправленных в SO по этой проблеме, поскольку он относится к iOS 7. Все решения, которые я пробовал, делают не, похоже, хорошо сохраняются для текстовых представлений, отображающих атрибутированную строку. В следующих трех шагах я расскажу, как самый ответный ответ на SO (qaru.site/info/102960/...) отвечает на то, что пользователь впервые нажал на клавишу возврата.
(1.) Текстовое представление стало первым ответчиком в viewDidLoad
. Прокрутите до нижней части текстового вида, где находится курсор.
(2.) Прежде чем вводить один символ, нажмите клавишу возврата на клавиатуре. Карет исчезает с глаз долой.
(3.) Повторное нажатие клавиши возврата, похоже, нормализует ситуацию. (Примечание: удаление последней новой строки, однако, заставляет каретку снова исчезать).