IQKeyboardManager zrobi to za Ciebie BEZ LINII KODU , wystarczy przeciągnąć i upuścić powiązany plik źródłowy do projektu. IQKeyboardManager obsługuje również orientację urządzenia , automatyczne zarządzanie paskiem narzędzi UIT , keyboardDistanceFromTextField i znacznie więcej niż myślisz.
Oto schemat kontroli:
Krok 1: - Dodano powiadomienia o globalne UITextField
, UITextView
oraz UIKeyboard
w klasie singleton. Nazwałem to IQKeyboardManager .
Krok 2: - W przypadku stwierdzenia UIKeyboardWillShowNotification
, UITextFieldTextDidBeginEditingNotification
czy UITextViewTextDidBeginEditingNotification
powiadomień, a następnie postarać się o topMostViewController
wystąpienie z UIWindow.rootViewController
hierarchii. Aby prawidłowo ją odsłonić UITextField
/ UITextView
na niej topMostViewController.view
należy wyregulować ramkę.
Krok 3: - Obliczona oczekiwana odległość ruchu topMostViewController.view
w odniesieniu do pierwszej odpowiedzi UITextField
/ UITextView
.
Krok 4: - Przesunięto w topMostViewController.view.frame
górę / w dół zgodnie z oczekiwaną odległością ruchu.
Krok 5: - W przypadku stwierdzenia UIKeyboardWillHideNotification
, UITextFieldTextDidEndEditingNotification
czy UITextViewTextDidEndEditingNotification
zgłoszenie, a następnie ponownie spróbować uzyskać topMostViewController
wystąpienie z UIWindow.rootViewController
hierarchii.
Krok 6: - Obliczona zakłócona odległość, topMostViewController.view
którą należy przywrócić do pierwotnej pozycji.
Krok 7: - Przywrócenie topMostViewController.view.frame
zgodnie z zakłóconą odległością.
Krok 8: - Utworzono instancję pojedynczej instancji klasy IQKeyboardManager podczas ładowania aplikacji, więc każde UITextField
/ UITextView
w aplikacji dostosuje się automatycznie zgodnie z oczekiwaną odległością ruchu.
To wszystko