我制作了一个简单的应用程序来说明问题。我有一个自定义标签视图,但是当我单击文本字段并打开键盘时,导航标签也被向上推。我希望导航不可见(就像人们对任何应用程序所期望的那样)。
此图说明了问题:
如果我使用本机TabView
,则不会发生此问题,但是我想使用自定义标签。有人知道如何处理吗?在下面提供代码。
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)
}
}
}
答案 0 :(得分:0)
可能的解决方案/解决方法是将CustomTabs
嵌入到VStack
的{{1}}中,即使在键盘出现时也可以将选项卡向下推,然后将其放入通过Spacer
展现在您的视图前面。
ZStack
为简单起见,我只是决定将标签高度设置为70。更漂亮的解决方案是使用GeometryReader。