Отслеживаем открытие клавиатуры в SwiftUI
Чтобы определить открыта клавиатура в данный момент или нет, нам достаточно поработать с системным механизмом NotificationCenter
и установить прослушивание на нужные нам события.

Отслеживаем высоту клавиатуры
Сейчас мы напишем простой класс, который будет отслеживать высоту нашей клавиатуры. Ведь, зная высоту клавиатуры, мы можем определять открыта она или нет. Давайте напишем следующий код:
Теперь мы можем объявить @ObservedObject
в любом нашем представлении, вот так:

Переменная, а точнее свойства объекта в переменной у нас “реактивные” за счет @ObservedObject
и @Published
, поэтому мы можем отслеживать их состояние в реальном времени. Давайте с помощью декларативной функции onChange
установим “слушатель” на нашу переменную height
внутри объекта keyboard
, как-то так:

И вызовем открытие клавиатуры. В результате, событие внутри onChange
должно отработать, ведь содержимое переменной height
было изменено.
Если в переменной высота будет больше 0, значит клавиатура открыта. Если равно 0, то клавиатура закрыта. Вот в целом и все, основная работа выполнена.
Также мы можем написать себе удобную структуру помощник, которая будет “поднимать” контент, если клавиатура в данный момент открыта. Удобно, когда у нас есть текстовые поля и клавиатура заграждает содержимое экрана.
Вызывать данную структуру очень просто:

Данный метод сработает автоматически, нам просто надо будет вызвать открытие клавиатуры (любым способом).
Спасибо за внимание, если остались вопросы - оставляйте их в комментариях.
Оставьте комментарий