manumateos.dev

UIKeyboardLayoutGuide

En iOS 15 se introdujo una nueva forma de hacer que nuestras aplicaciones respondan a eventos tan comunes como la aparición o desaparición de un teclado (y también a los teclados flotantes que pueden ocurrir en iPadOS). Se trata del nuevo atributo keyboardLayoutGuide que forma parte de UIView.

Lo que hace años suponía estar escuchando a una notificación y recolocar vistas (activando o desactivando constraints o, peor, modificando a mano el frame de ciertos elementos que puedan estar afectados) ahora se reduce a crear una nueva constraint que se coloque en uno de los anclas de esta layout guide, generalmente el topAnchor.

Y ya está. Se crea y se activa la constraint con una línea de este tipo:

let constraint = self.scrollView.bottomAnchor.constraint(equalTo: self.view.keyboardLayoutGuide.topAnchor)
constraint.isActive = true

El uso básico es este. Luego ya es posible añadir otros usos más interesantes, como por ejemplo para colocar una barra de herramientas adosada al teclado y que le persiga. Esto lo desarrollaré en el futuro.

Update: en Xcode 13 se introdujo un checkbox en el Interface Builder que permite habilitar el Keyboard Layout Guide como una guía más, y configurar nuestras constraints como veníamos haciendo con el safe area.

Keyboard layout guide en Interface Builder