В моем случае использования я должен поставить TextField
под доступными элементами в List
, и, используя этот TextField
, мы можем добавить элементы в List
.
Изначально элементов списка нет (массив items
пуст)
Вот минимальный воспроизводимый пример
import SwiftUI
struct ContentView: View {
@State var itemName = ""
@State var items = [String]()
var body: some View {
NavigationView {
List {
ForEach(self.items, id: \.self) {
Text($0)
}
VStack {
TextField("Item Name", text: $itemName)
.textFieldStyle(RoundedBorderTextFieldStyle())
Button(action: {
self.items.append(self.itemName)
self.itemName = ""
}) {
Text("Add Item")
}
}
}
.navigationBarTitle(Text("Title"))
}
}
}
Мы можем добавить новый элемент в список, набрав что-нибудь в TextField
и нажав «Добавить элемент» Button
. Каждый элемент, который мы добавляем с помощью TextField
, появляется над текстовым полем в List
. Итак, TextField
падает в List
(точно так же, как приложение Apple Reminders).
Если в приложении много элементов (более 7 элементов), клавиатура закрывает TextField
, когда появляется клавиатура, и мы не можем видеть TextField
.
Проверьте этот снимок экрана:
Я хочу знать, как автоматически прокручивать список (перемещать представление вверх), чтобы увидеть TextField
при появлении клавиатуры (как в приложении Apple Reminders).