IQKeyboardManager зробить це для вас, БЕЗ ЛІНІЇ КОДУ , потрібно лише перетягнути відповідний вихідний файл до проекту. IQKeyboardManager також підтримує орієнтацію на пристрої , автоматичне управління панеллю UITool , клавіатураDistanceFromTextField та багато іншого, ніж ви думаєте.
Ось схема управління потоком:
Шаг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
вниз відповідно до порушеної відстані.
Step8: - конкретизований одноточечного IQKeyboardManager екземпляра класу на додатку навантаження, тому кожен UITextField
/ UITextView
в додатку буде автоматично підлаштовуватися в залежності від очікуваного відстані переміщення.
Це все