IQKeyboardManager hace esto por usted SIN LÍNEA DE CÓDIGO , solo necesita arrastrar y soltar el archivo fuente relacionado al proyecto. IQKeyboardManager también es compatible con la orientación del dispositivo , la gestión automática de UIToolbar , keyboardDistanceFromTextField y mucho más de lo que piensa.

Aquí está el diagrama de flujo de control:

Paso 1: - Añadido notificaciones globales de UITextField, UITextViewy UIKeyboarden una clase Singleton. Lo llamé IQKeyboardManager .
Paso 2: - Si lo encuentra UIKeyboardWillShowNotification, UITextFieldTextDidBeginEditingNotificationo UITextViewTextDidBeginEditingNotificationlas notificaciones, a continuación, tratar de obtener topMostViewControllerla instancia de la UIWindow.rootViewControllerjerarquía. Con el fin de destapar adecuadamente UITextField/ UITextViewen él, topMostViewController.view's marco necesita ser ajustado.
Paso 3: - Distancia de movimiento esperada calculada topMostViewController.viewcon respecto a la primera respuesta UITextField/ UITextView.
Paso 4: - Movido topMostViewController.view.framehacia arriba / abajo de acuerdo a la distancia medida que se espera.
Paso 5: - Si se encuentra UIKeyboardWillHideNotification, UITextFieldTextDidEndEditingNotificationo UITextViewTextDidEndEditingNotificationnotificación, intente nuevamente obtener la topMostViewControllerinstancia de la UIWindow.rootViewControllerjerarquía.
Paso 6: - La distancia perturbada calculada de la topMostViewController.viewcual debe restaurarse a su posición original.
Paso 7: - Restaurado topMostViewController.view.framesegún la distancia perturbada.
Paso 8: - Instancia de instancia IQKeyboardManager singleton instanciada en la carga de la aplicación, por lo que cada UITextField/ UITextViewen la aplicación se ajustará automáticamente de acuerdo con la distancia de movimiento esperada.
Eso es todo