IQKeyboardManager сделайте это для вас с БЕЗ СТРОКИ КОДА , нужно только перетащить соответствующий исходный файл в проект. IQKeyboardManager также поддерживает Ориентация устройства , Автоматическое управление UIToolbar , клавиатураDistanceFromTextField и намного больше, чем вы думаете.
Вот схема управления:
Step1: - Добавлены глобальные уведомления UITextField
, UITextView
и UIKeyboard
в одноэлементном классе. Я назвал это IQKeyboardManager .
Step2: - Если найдено UIKeyboardWillShowNotification
, UITextFieldTextDidBeginEditingNotification
или UITextViewTextDidBeginEditingNotification
уведомлений, попробуйте получить экземпляр topMostViewController
из иерархии UIWindow.rootViewController
. Для того, чтобы правильно раскрыть UITextField
/ UITextView
на нем, необходимо отрегулировать кадр topMostViewController.view
.
Шаг 3: - Расчетное ожидаемое расстояние перемещения topMostViewController.view
относительно первого ответа UITextField
/ UITextView
.
Шаг 4: - Перемещено topMostViewController.view.frame
вверх / вниз в соответствии с ожидаемым расстоянием перемещения.
Шаг 5: - Если найдено уведомление UIKeyboardWillHideNotification
, UITextFieldTextDidEndEditingNotification
или UITextViewTextDidEndEditingNotification
, попробуйте снова получить экземпляр topMostViewController
из иерархии UIWindow.rootViewController
.
Шаг 6: - Расчетное нарушенное расстояние topMostViewController.view
, которое необходимо восстановить в исходное положение.
Шаг 7: - Восстановлен topMostViewController.view.frame
вниз в соответствии с нарушенным расстоянием.
Step8: - Инстанцированный синглтон IQKeyboardManager Экземпляр класса при загрузке приложения, поэтому каждый UITextField
/ UITextView
в приложении будет автоматически корректироваться в соответствии с ожидаемым расстоянием перемещения.
Вот и все