SwiftUI:键盘出现时菜单框架发生变化

Ron*_*ald 5 swift swiftui

我有一个简单的 SwiftUI 视图,其中有一个嵌入堆栈中的菜单和 TexField。

当键盘出现时,菜单的框架会发生变化,如下面的 GIF 所示。菜单的背景为红色,文本字段的背景为蓝色。

选择菜单后,框架将返回到之前(且正确)的尺寸。

struct ContentView: View {
    @State var question = ""        
    var body: some View {
        Spacer()
        HStack {
            Menu("Options") {
                Button("Order Now") {}
                Button("Adjust Order") {}
                Button("Cancel") {}
            }
            .background(.red)
            
            TextField("placeholder", text: $question, axis: .vertical)
                .background(.blue)
        }
        .padding()
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我希望菜单保持其框架大小,就像 TextField 保持其键盘前外观大小一样。

如何保持菜单框架的正确尺寸?

小智 1

除了Jatin的答案之外,您还可以定义标签的框架。

我还添加了.ignoresSafeArea(.keyboard)在打开键盘的情况下单击时标签向上移动的信息

struct ContentView: View {
    @State var question = ""
    var body: some View {
        VStack {
            Spacer()
                HStack {
                    Menu {
                        Button("Order Now") {}
                        Button("Adjust Order") {}
                        Button("Cancel") {}
                    } label: {
                        Text("Options").ignoresSafeArea(.keyboard)
                    }
                    .frame(maxHeight:20, alignment: .center)
                    .background(.red)
                    
                    TextField("placeholder", text: $question)
                        .background(.blue)
                    
                }
            }
            .padding()
    }
}
Run Code Online (Sandbox Code Playgroud)