Autocomplete 自动完成文本字段建议未注册点击事件快捷界面

Autocomplete 自动完成文本字段建议未注册点击事件快捷界面,autocomplete,swiftui,textfield,buttonclick,swiftui-form,Autocomplete,Swiftui,Textfield,Buttonclick,Swiftui Form,我是SwiftUI的新手(和我们大多数人一样) 我正在尝试用GooglePlaces实现一个自动完成的文本字段,我已经基本实现了,但是我的按钮点击在我的“建议”列表中不起作用 代码贴在下面 struct CreateVenueView: View { @ObservedObject private var viewModel: CreateVenueViewModel = CreateVenueViewModel() @State private var selectedSp

我是SwiftUI的新手(和我们大多数人一样)

我正在尝试用GooglePlaces实现一个自动完成的文本字段,我已经基本实现了,但是我的按钮点击在我的“建议”列表中不起作用

代码贴在下面


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")
    }
}
如您所见,当my viewmodel中有可用的“地址”时,我们将显示建议列表。附上gif

但是,并不是所有项目都调用按钮操作,当选择第二个选项时,前两个项目注册单击,正如您可以从突出显示中看到的,但是当在第二个选项下选择任何元素时,您将看到与表单发生交互

当我没有偏移量或间隔符时,列表会呈现在屏幕底部,表单下方,所有按钮动作都会被调用。因此,我猜表单截取点击事件与我的建议列表相比存在问题

有人知道我能做些什么来解决这个问题吗

谢谢


可能有用。

选择器可以代替列表吗?我在选择列表时遇到了麻烦,即使我在项目中添加了按钮或点击手势,但选择器似乎可以用于选择。
                        List {
                               ForEach(viewModel.addresses) { address in
                                    {
                                        Text("\(address.displayAddress())")
                                          .onTapGesture{
                                             self.viewModel.selectedAddress = address

                                        }
                                      }
                                }
                         }