SwiftUI: Why is the height of proxy.safeAreaInsets.bottom equal to keyboardHeight?

924 views Asked by At

So the safeAreaInset.bottom on the iPhone 11 Pro Max is 34.0, but when the keyboard is open, it changes the safeAreaInset.bottom to the height of the keyboard (346.0 points). Is there any way to access the safeAreaInset.bottom value (34.0) when the keyboard is open?

For reference, my content view has a geometry reader in it:

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
    }
}

I also need this to be adaptable across all devices, and it seems like making a bunch of if statements for the different devices is a pretty horrible solution. Anyone have suggestions?

1

There are 1 answers

1
Asperi On BEST ANSWER

Here is possible solution. Tested with Xcode 12 / iOS 14

demo

var body: some View
{
    GeometryReader
    { gp in
        VStack
        {
            Text("Bottom: \(gp.safeAreaInsets.bottom)")
            Spacer()
            TextField("Value", text: $selection)
            Spacer()
        }
    }.ignoresSafeArea(.keyboard, edges: .bottom)     // << here !!
}