当我在 ScrollView 中有 TextField 并点击它时,键盘会按预期显示。但似乎 TextField 已向上移动到足以显示输入区域,但我希望移动到足够的位置,以便整体可见。否则它看起来像是被剪裁了的。我找不到改变这种行为的方法。
\nstruct ContentView: View {\n @State var text:String = ""\n\n var body: some View {\n ScrollView {\n VStack(spacing: 10) {\n ForEach(1...12, id: \\.self) {\n Text("\\($0)\xe2\x80\xa6")\n .frame(height:50)\n }\n TextField("Label..", text: self.$text)\n .padding(10)\n .background(.white)\n .cornerRadius(10)\n .overlay(\n RoundedRectangle(cornerRadius: 10)\n .stroke(.blue, lineWidth: 1)\n )\n }\n .padding()\n .background(.red)\n }\n }\n \n}\nRun Code Online (Sandbox Code Playgroud)\n\n\n
bur*_*nsi 12
使用 .safeAreaInset 修饰符。
\n @State var text:String = ""\n\n var body: some View {\n ScrollView {\n VStack(spacing: 10) {\n ForEach(1...12, id: \\.self) {\n Text("\\($0)\xe2\x80\xa6")\n .frame(height:50)\n }\n TextField("Label..", text: self.$text)\n .padding(10)\n .background(.white)\n .cornerRadius(10)\n .overlay(\n RoundedRectangle(cornerRadius: 10)\n .stroke(.blue, lineWidth: 1)\n )\n }\n .padding()\n .background(.red)\n }.safeAreaInset(edge: .bottom) { //this will push the view when the keyboad is shown\n Color.clear.frame(height: 30)\n }\n }\nRun Code Online (Sandbox Code Playgroud)\n