SwiftUI:为啥proxy.safeAreaInsets.bottom的高度等于keyboardHeight?
Posted
技术标签:
【中文标题】SwiftUI:为啥proxy.safeAreaInsets.bottom的高度等于keyboardHeight?【英文标题】:SwiftUI: Why is the height of proxy.safeAreaInsets.bottom equal to keyboardHeight?SwiftUI:为什么proxy.safeAreaInsets.bottom的高度等于keyboardHeight? 【发布时间】:2020-10-19 00:01:13 【问题描述】:所以 iPhone 11 Pro Max 上的 safeAreaInset.bottom 是 34.0,但是当键盘打开时,它会将 safeAreaInset.bottom 更改为键盘的高度(346.0 点)。有什么方法可以在键盘打开时访问 safeAreaInset.bottom 值(34.0)?
作为参考,我的内容视图中有一个几何阅读器:
var body: some View
GeometryReader proxy in
//I pass in proxy into views in here and then access the safe area with proxy.safeAreaInsets.bottom
我还需要它适用于所有设备,似乎为不同设备制作一堆 if 语句是一个非常糟糕的解决方案。有人有建议吗?
【问题讨论】:
【参考方案1】:这是可能的解决方案。使用 Xcode 12 / ios 14 测试
var body: some View
GeometryReader
gp in
VStack
Text("Bottom: \(gp.safeAreaInsets.bottom)")
Spacer()
TextField("Value", text: $selection)
Spacer()
.ignoresSafeArea(.keyboard, edges: .bottom) // << here !!
【讨论】:
谢谢!像魅力一样工作!为什么它会起作用?这是什么逻辑?以上是关于SwiftUI:为啥proxy.safeAreaInsets.bottom的高度等于keyboardHeight?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI,为啥部分视图没有刷新? @State 变量未更新
SwiftUI:为啥这个 ScrollView 的内容错位了?