Представить лист с TextField и его клавиатурой в одной анимации?

Я создаю приложение для SwiftUI. Вы нажимаете кнопку «Добавить», которая открывает лист частичной высоты, где вы можете ввести и сохранить новую задачу. Ввод добавления листа (TextField) должен быть сфокусирован при появлении листа, поэтому, чтобы все было быстро и плавно, я хотел бы, чтобы лист и клавиатура анимировались на экране вместе, в одно и то же время. После долгих экспериментов и гугления я до сих пор не могу понять, как это сделать.

Похоже, есть два пути сделать что-то подобное:

(1) Автофокус на листе, который я могу использовать@FocusStateи.onAppearили.taskвнутри листа, чтобы гарантировать, что TextField сфокусирован, как только он появится. Это просто функционально, но я не могу найти его перестановку, которая даст мне эту единственную анимацию: это лист, затем клавиатура, предположительно потому, что эти модификаторы не срабатывают, пока лист не появится на экране.

(2) Аксессуар клавиатуры/панель инструментов Модификатор кажется специально созданным для представления нестандартной высоты, которое прилипает к клавиатуре — вы теряете красивую анимацию листа, но получаете возможность автоматически изменять размер представления. Однако,.toolbarпредназначен для представления элементов управления рядом с текстовым полем, которое само по себе не привязано к клавиатуре. То есть поле должно быть на экране перед клавиатурой, чтобы оно могло получить фокус... Я не знаю, как поместить сам ввод на панель инструментов. Похоже, чат-приложения нашли способ сделать это, но я не знаю, что это такое.

Любая помощь приветствуется! Спасибо!

0 ответов

Другие вопросы по тегам