【发布时间】:2019-11-05 01:33:14
【问题描述】:
当键盘出现时如何显示完整的列表?键盘隐藏了列表的下半部分。
我的列表行中有一个文本字段。当键盘出现时,无法向下滚动查看完整列表。键盘位于列表的前面,而不是列表的“下方”。这是我的编码:
struct ContentView: View {
@State private var name = ""
var body: some View {
List {
VStack {
Text("Begin")
.frame(width: UIScreen.main.bounds.width)
.padding(.bottom, 400)
.background(Color.red)
TextField($name, placeholder: Text("enter text"), onEditingChanged: { _ in
//
}) {
//
}
Text("End")
.frame(width: UIScreen.main.bounds.width)
.padding(.top, 400)
.background(Color.green)
}
.listRowInsets(EdgeInsets())
}
}
}
任何人都可以帮助我如何做到这一点?
非常感谢。
【问题讨论】:
-
尝试订阅键盘出现/消失事件并将底部边距应用到
VStack -
我目前正在做一些非常相似的事情(使用 ScrollView 而不是 List)。我认为订阅键盘显示/隐藏事件是正确的方法。但这不是困难的部分。挑战在于找出活动文本字段在哪里以确定是否需要偏移量,如果需要,需要多少。您的具体示例很简单,因为您有一个固定的 400 像素……但是,我假设这只是一个示例。目标是能够确定文本字段与其父级的相对位置以及它滚动了多少,然后我们知道我们需要移动多少。