IQKeyboardManager сделает это за вас, БЕЗ СТРОЧКИ КОДА , нужно только перетащить соответствующий исходный файл в проект. IQKeyboardManager также поддерживает ориентацию устройства , автоматическое управление UIToolbar , keyboardDistanceFromTextField и многое другое, чем вы думаете.
Вот блок-схема управления:
Шаг1: - Добавлены глобальные уведомления о UITextField
, UITextView
и UIKeyboard
в одноплодной классе. Я назвал его IQKeyboardManager .
Шаг2: - Если будет установлено 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
согласно нарушенному расстоянию.
Шаг 8: - Создан экземпляр класса singleton IQKeyboardManager при загрузке приложения, поэтому каждый UITextField
/ UITextView
в приложении будет автоматически настраиваться в соответствии с ожидаемым расстоянием перемещения.
Вот и все