【发布时间】:2020-01-18 08:47:24
【问题描述】:
在我的用例中,我必须在List 中的可用项目下方放置一个TextField,通过使用该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 的提醒应用程序一样)。
如果应用程序有很多项目(超过 7 个项目),当键盘出现时,键盘会覆盖TextField,我们看不到TextField。
检查此屏幕截图:
我想知道的是如何在键盘出现时自动滚动列表(向上移动视图)以查看TextField(如在 Apple 的提醒应用中)。
【问题讨论】:
-
您可以做的一件事(在这里回避您的问题)是将文本字段移动到其他位置。这可能会解决这种情况,但显然不能解决关于移动东西以尊重键盘的更大问题。
-
我尝试了几种不同的方法,最后对我有用的是stackoverflow.com/a/60178361/4189037
标签: swiftui swiftui-list