Вид клавиатуры в iOS 8 действует странно

В настоящее время я изменяю размер прокрутки, когда клавиатура активна. Я также использую стрелки, чтобы пользователь мог быстро перейти к следующему текстовому полю. Мой scrollRectToVisible работает неправильно в вертикальном направлении. Он движется горизонтально. У меня проблема с моей десятичной панелью.

2014-09-12 10:29:24.039 TS[1895:455658] Can't find keyplane that supports type 8 for keyboard iPhone-Portrait-DecimalPad; using 1425143906_Portrait_iPhone-Simple-Pad_Default

Я также прошел через следующий код.

- (void)keyboardDidShow:(NSNotification *)n {
// Find top of keyboard input view
CGRect keyboardRect = [[[n userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
keyboardRect = [self.view convertRect:keyboardRect fromView:nil];
CGFloat keyboardTop = keyboardRect.origin.y;

// Resize scroll view
CGRect newScrollViewFrame = CGRectMake(0, 0, self.view.bounds.size.width, keyboardTop);
newScrollViewFrame.size.height = keyboardTop - self.view.bounds.origin.y;
[self.scrollView setFrame:newScrollViewFrame];
}

Я заметил, что keyboardRect - 244 для моей десятичной клавиатуры и 207 для моей клавиатуры по умолчанию. Я не уверен, как это исправить. Также эта проблема появилась только в iOS 8. У моего приложения не было никаких проблем в iOS 7. Спасибо за помощь.

UPDATE: Я обнаружил, что, когда текстовое поле изначально выбрано, scrollview перемещается соответствующим образом. Когда вы выбираете другое текстовое поле, когда клавиатура встает, возникает проблема. Похоже, что scrollview сбрасывает свой размер в исходные размеры. Почему это произойдет? Есть ли способ остановить это?

Ответ 1

1) issue

см. эту запись: Xcode iOS 8 Типы клавиатуры не поддерживаются

2) вопрос:

не уверен, что вы имеете в виду. может быть связано с изменением типа клавиатуры iOS 8. И помните, что rect включает в себя все аксессуары, которые вы добавили.

3) дополнительная проблема в разделе обновления:

Я сталкиваюсь с той же проблемой и выясняю некоторые подсказки.

У меня есть вид прокрутки, расположенный внутри viewcontroller.view, и куча текстового поля внутри этого прокрутки. Я изменяю размер рамки прокрутки на UIKeyboardDidShowNotification и UIKeyboardWillHideNotification. Он отлично работает на iOS7, но на iOS8 scrollview будет постепенно изменять размер до нормального размера, когда вы фокусируетесь на другом текстовом поле (станьте первым ответчиком).

Я еще раз просмотрел его. У меня есть другая страница, которая создается до обновления iOS8 и по-прежнему отлично работает с использованием той же логики. Но одно отличие состоит в том, что на этой странице прокрутка отображается программно, а эта неисправная страница - автоматическая компоновка (scrollview имеет все ограничения нулевого предела относительно viewcontroller.view).

Итак, я сделал тест, изменил размер фрейма и привязанность viewcontroller.view на клавиатуреhow/hide, и проблема исчезла. Таким образом, я предполагаю, что iOS8 добавляет всю переработку страницы (пересчитывает ограничения) при изменении первого ответа.

Не уверен, что является лучшим решением. Будет обновлен этот ответ, когда я выясню лучший способ обработать эту проблему.