【发布时间】:2021-04-22 12:16:22
【问题描述】:
与我的 TabView 内视图中的输入字段的交互导致我的其他视图在出现时出现奇怪的动画。此外,导航栏没有按应有的方式隐藏。
我已经确定这是一个输入字段 + TabView 问题,因为:
- 模拟器上不会出现此问题(键盘不会向上推)。
- 如果用户在与输入字段交互之前导航到其他选项卡视图,则不会发生这种情况。
- 当我将标签视图视图的内容放在另一个视图中并导航到它时,不会发生这种情况。
我研究了一些解决方案,但没有运气: 有没有办法覆盖键盘动画? 有没有办法在标签视图加载时强制标签视图视图“出现”? 有没有办法阻止其他 TabView 子视图受到其他 TabView 视图更改的影响
标签页代码
TabView (){
ViewA()
.tabItem {
Image("viewa").renderingMode(.template)
Text("viewa")
}
ViewB()
.tabItem {
Image("viewb").renderingMode(.template)
Text("viewb")
}
ViewC()
.tabItem {
Image("viewc").renderingMode(.template)
Text("viewc")
}
ViewD()
.tabItem {
Image("viewd").renderingMode(.template)
Text("viewd")
}
}
在标签视图子视图中,动画被应用到包含我的项目的 VStack 中。
VStack{
items...
}.animation(.easeInOut)
此代码用于隐藏导航:
.background(NavigationConfigurator { nav in
nav.hidesBarsOnSwipe = true
})
预期行为:
与输入字段交互时的行为:
【问题讨论】:
-
我进行了更多故障排除。与输入字段交互时,此时会触发选项卡视图中所有其他视图的 onAppear 方法。为什么与视图中的文本字段交互会导致选项卡视图中的所有其他视图出现?