SwiftUI不使用Xcode 12键盘推送导航
我制作了一个简单的应用程序来说明这个问题。我有一个自定义的选项卡视图,但是当我点击文本字段并打开键盘时,我的导航选项卡也被向上推。我希望导航不可见(正如任何应用程序所期望的那样) 此图说明了问题: 如果使用本机SwiftUI不使用Xcode 12键盘推送导航,swiftui,Swiftui,我制作了一个简单的应用程序来说明这个问题。我有一个自定义的选项卡视图,但是当我点击文本字段并打开键盘时,我的导航选项卡也被向上推。我希望导航不可见(正如任何应用程序所期望的那样) 此图说明了问题: 如果使用本机选项卡视图,则不会出现此问题,但我希望使用自定义选项卡。有人知道怎么处理吗?提供下面的代码 struct ContentView: View { @State var menu = 0 var body: some View { VStack {
选项卡视图
,则不会出现此问题,但我希望使用自定义选项卡。有人知道怎么处理吗?提供下面的代码
struct ContentView: View {
@State var menu = 0
var body: some View {
VStack {
VStack {
if menu == 0 {
FirstPage()
} else if menu == 1 {
Text("all is good")
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
CustomTabs(menu: $menu)
}
}
}
struct CustomTabs: View {
@Binding var menu: Int
var body: some View {
HStack {
Spacer()
Text("Nav1")
.onTapGesture{
self.menu = 0
}
Spacer()
Text("Nav2")
.onTapGesture{
self.menu = 1
}
Spacer()
}
.padding()
.background(Color(.red))
}
}
struct FirstPage: View {
@State var mood: String = ""
var body: some View {
VStack {
Text("How are you?")
TextField("answer textfield", text: $mood)
}
}
}
一个可能的解决方案/解决办法是将
自定义选项卡
嵌入VStack
中,使用垫片
,即使在键盘出现时也会向下推动选项卡,然后通过ZStack
将此堆栈放在视图前面
struct ContentView: View {
@State var menu = 0
var body: some View {
ZStack {
VStack {
if menu == 0 {
FirstPage()
} else if menu == 1 {
Text("all is good")
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
VStack {
Spacer(minLength: UIScreen.main.bounds.height - 70)
CustomTabs(menu: $menu)
.frame(height: 70)
}
}
}
}
为了简单起见,我刚刚决定将标签高度设置为70。一个更漂亮的解决方案是使用GeometryReader。一个可能的解决方案/解决方法是将
自定义选项卡
嵌入VStack
中,使用间隔符
,即使在键盘出现时也会向下推动选项卡,然后通过ZStack
将该堆栈放在视图前面
struct ContentView: View {
@State var menu = 0
var body: some View {
ZStack {
VStack {
if menu == 0 {
FirstPage()
} else if menu == 1 {
Text("all is good")
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
VStack {
Spacer(minLength: UIScreen.main.bounds.height - 70)
CustomTabs(menu: $menu)
.frame(height: 70)
}
}
}
}
为了简单起见,我刚刚决定将标签高度设置为70。一个更漂亮的解决方案是使用GeometryReader。有趣的解决方案!然而,若我将ScrollView和content=/有趣的解决方案放在VStack中,它似乎就不起作用了!然而,若我将ScrollView和内容放在VStack中,它似乎不起作用=/