如果激活TextField
后按下Open link
按钮,NavigationLink
将打开,之后如果返回上一屏幕,VStack
和TextField
将停留在屏幕中间。因为底部SafeArea
将通过键盘展开。如果ZStack
中的第一个视图是ScrollView
,则会发生这种情况。键盘被禁用后,它应该回到底部。我该如何解决这个问题?
struct ContentView: View {
@State private var text = ""
var body: some View {
NavigationStack {
ZStack(alignment: .bottom) {
ScrollView {
Color.green.opacity(0.2)
.frame(height: 1000)
}
.ignoresSafeArea(.keyboard)
VStack {
TextField("", text: $text, prompt: Text("Input"))
.textFieldStyle(.roundedBorder)
.padding()
NavigationLink("Open link") {
Text("Details view")
}
}
.background { Color.red }
.background(ignoresSafeAreaEdges: .bottom)
}
}
}
}
1条答案
按热度按时间bxjv4tth1#
您可以尝试使用@FocusState属性 Package 。添加以下3个命令行:
您编写的代码如下所示:
结果:
希望对你有用!