Автозаполнение предложений TextField, не регистрирующих событие нажатия SwiftUI - PullRequest
0 голосов
/ 22 апреля 2020

Я новичок в SwiftUI (как и большинство из нас)

Я пытаюсь реализовать автозаполнение TextField с местами Google, у меня работает базовая реализация c, но нажатия кнопок не отображаются. t работает над моим списком "предложений".

Код, размещенный ниже


struct CreateVenueView: View {

    @ObservedObject private var viewModel: CreateVenueViewModel = CreateVenueViewModel()
    @State private var selectedSport = 0 {
        willSet(newValue) {
            print(newValue)
        }
    }


    var body: some View {
        ZStack {
            Form {
                Picker(selection: $selectedSport, label: Text("Sport")) {
                    ForEach(Sport.all()) { sport in
                        Text(sport.value.capitalized)
                    }
                }
                .padding(.vertical, 5)

                TextField("Venue name", text: $viewModel.venueName)
                    .padding(.vertical, 5)

                TextField("Address", text: $viewModel.typedAddress)
                    .padding(.vertical, 5)

                TextField("Venue detail", text: $viewModel.selectedSport)
                    .padding(.vertical, 5)
            }
            if !viewModel.addresses.isEmpty {
                VStack(alignment: .leading) {
                    List {
                        ForEach(viewModel.addresses) { address in
                            Button(action: {
                                self.viewModel.selectedAddress = address
                            }) {
                                Text("\(address.displayAddress())")
                            }
                        }
                    }
                    .frame(height: CGFloat(viewModel.addresses.count * 50))
                    Spacer()
                }
                .padding()
                .offset(y: 120)
                .shadow(radius: 5)
                .cornerRadius(5)
            }
        }
        .accentColor(Color.Palette.accent)
        .navigationBarTitle("Add Venue")
    }
}

Как вы можете видеть, когда в моей модели просмотра доступны "адреса", мы показываем список предложений. gif прилагаются.

Demo

Однако действия кнопки не выполняются для всех элементов, первые два элемента регистрируют щелчки, как вы можете видеть из выделения, когда выбран второй вариант, но когда под вторым параметром выбран какой-либо элемент, вы увидите, что взаимодействие происходит с формой.

Когда у меня нет смещения или проставки, список отображается в нижней части экрана, значительно ниже формы, и все действия кнопок запускаются. Поэтому я предполагаю, что есть проблема с формой, перехватывающей события клика, в отличие от моего списка предложений.

У кого-нибудь есть идея, что я мог бы сделать, чтобы решить эту проблему?

Спасибо

...