SwiftUI popover form Data disappears when keyboard appears

Viewed 173

Build a popover with form and it has one Picker and TextEditor.when keyboard appears for TextEditor picker values disappears

main View

struct FirstView: View {
    @State var isShowPopover:Bool = false
    var body: some View {
        Button {
            self.isShowPopover = true
        } label: {
            Text("Click Me")
        }
        .popover(isPresented: $isShowPopover) {
            ContentView()
        }

    }
}

struct FirstView_Previews: PreviewProvider {
    static var previews: some View {
        FirstView()
    }
}

Popover

struct ContentView: View {
    @ObservedObject var viewModel = ViewModel()

    var body: some View {
        NavigationView {
            Form{
                Section{
                    Picker(selection: $viewModel.selectedHeaderId,
                            label: Text("Types").font(.system(size: 14, weight: .regular)),
                            content: {
                        ForEach(viewModel.headerList, id: \.id){ item in
                            Text(item.label)
                                .tag(item.id)
                        }
                    })
                    .listRowInsets(EdgeInsets())

                }

                Section{
                    HStack(alignment: .top){
                        Text("Description")
                            .font(.system(size: 16,weight: .regular))
                        Spacer()

                        TextEditor(text: $viewModel.description)
                            .multilineTextAlignment(.trailing)
                            .frame(minHeight: 50)
                    }
                    .padding(.top,12)
                    .listRowInsets(EdgeInsets())
                }
            }
            .frame(height: 300)
            .background(Color(UIColor.systemBackground))
            .navigationBarTitle(Text("Bug"), displayMode: .inline)
        }


    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

View Model

class ViewModel: ObservableObject {
    @Published var description:String = ""
    @Published var selectedHeaderId:Int = 0
    @Published var headerList:[Header] = [Header(id: 1, label: "item 1"),Header(id: 2, label: "item 2")]
}

struct Header{
    let id:Int
    let label:String
}

Environment Xcode 13.2.1 Tested on iOS 14.5 & 15.2

Demo

0 Answers
Related