Представить лист с TextField и его клавиатурой в одной анимации?
Я создаю приложение для SwiftUI. Вы нажимаете кнопку «Добавить», которая открывает лист частичной высоты, где вы можете ввести и сохранить новую задачу. Ввод добавления листа (TextField) должен быть сфокусирован при появлении листа, поэтому, чтобы все было быстро и плавно, я хотел бы, чтобы лист и клавиатура анимировались на экране вместе, в одно и то же время. После долгих экспериментов и гугления я до сих пор не могу понять, как это сделать.
Похоже, есть два пути сделать что-то подобное:
(1) Автофокус на листе, который я могу использовать@FocusState
и.onAppear
или.task
внутри листа, чтобы гарантировать, что TextField сфокусирован, как только он появится. Это просто функционально, но я не могу найти его перестановку, которая даст мне эту единственную анимацию: это лист, затем клавиатура, предположительно потому, что эти модификаторы не срабатывают, пока лист не появится на экране.
(2) Аксессуар клавиатуры/панель инструментов Модификатор кажется специально созданным для представления нестандартной высоты, которое прилипает к клавиатуре — вы теряете красивую анимацию листа, но получаете возможность автоматически изменять размер представления. Однако,.toolbar
предназначен для представления элементов управления рядом с текстовым полем, которое само по себе не привязано к клавиатуре. То есть поле должно быть на экране перед клавиатурой, чтобы оно могло получить фокус... Я не знаю, как поместить сам ввод на панель инструментов. Похоже, чат-приложения нашли способ сделать это, но я не знаю, что это такое.
Любая помощь приветствуется! Спасибо!