logo
Mobile
Максим Колмогоров
Максим Колмогоров
SEO

Отслеживаем открытие клавиатуры в SwiftUI

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

Отслеживаем открытие клавиатуры в SwiftUI

Отслеживаем высоту клавиатуры

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

Теперь мы можем объявить @ObservedObject в любом нашем представлении, вот так:

объявляем переменную с классом KeyboardInfo

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

устанавливаем слушатель на переменную height

И вызовем открытие клавиатуры. В результате, событие внутри onChange должно отработать, ведь содержимое переменной height было изменено. 

Если в переменной высота будет больше 0, значит клавиатура открыта. Если равно 0, то клавиатура закрыта. Вот в целом и все, основная работа выполнена.

Также мы можем написать себе удобную структуру помощник, которая будет “поднимать” контент, если клавиатура в данный момент открыта. Удобно, когда у нас есть текстовые поля и клавиатура заграждает содержимое экрана.

Вызывать данную структуру очень просто:

пример использования структуры KeyboardAware

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

***

Спасибо за внимание, если остались вопросы - оставляйте их в комментариях.

Разработка приложений
Получите персональную стоимость на разработку мобильного приложения сегодня
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Оставьте комментарий

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Нет комментариев