Autocomplete 自动完成文本字段建议未注册点击事件快捷界面
我是SwiftUI的新手(和我们大多数人一样) 我正在尝试用GooglePlaces实现一个自动完成的文本字段,我已经基本实现了,但是我的按钮点击在我的“建议”列表中不起作用 代码贴在下面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
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
}
}
}
}