1

所以 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 语句是一个非常糟糕的解决方案。有人有建议吗?

4

1 回答 1

2

这是可能的解决方案。使用 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 !!
}
于 2020-10-19T04:21:16.167 回答