Может ли представление быть увеличено при появлении клавиатуры?

#objective-c #ios #cocoa-touch

#objective-c #iOS #cocoa-touch

Вопрос:

Я создал несколько текстовых полей внизу, которые требовали ввода пользователей. Существует ли какой-либо метод, который может автоматически увеличивать представление при появлении клавиатуры?

Комментарии:

1. Возможно, вы захотите взглянуть на TPKeyboardAvoiding , универсальное решение для перемещения текстовых полей с клавиатуры в iOS.

Ответ №1:

См. Перемещение содержимого, расположенного под клавиатурой, или эта реализация на основе Вычисление области, покрываемой клавиатурой.

По сути, вам нужно смонтировать свое представление в UIScrollView и добавить нижнюю вставку содержимого с той же высотой, что и клавиатура. Затем прокрутите с помощью setContentOffset:animated: . Это общее решение, которое вы можете использовать повторно.

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

Комментарии:

1. Обратите внимание, вам не обязательно использовать UIScrollView. Вы можете просто уменьшить значение y свойства center вашего основного представления, а затем снова увеличить его, когда клавиатура скроется. Вид прокрутки хорош тем, что позволяет вашим пользователям видеть другие части интерфейса, пока у них есть клавиатура, но это добавляет немного сложностей.

2. Тем не менее, я использую UIViewController для своей программы, можно ли решить проблему в этой среде?

3. @morningstar Было бы неплохо, если бы вы ссылались или предоставляли какой-либо код / скриншот о том, где / как изменяется свойство center.

Ответ №2:

используйте свойство -contentoffset вашего представления.