在SwiftUI中随机点击按钮上的手势响应

在SwiftUI中随机点击按钮上的手势响应,swiftui,gesture,Swiftui,Gesture,我的应用程序中有我的个人资料表单。在表单中我有一些按钮。其中5个按钮用于显示自定义下拉菜单,以选择Sax、血液、国籍等。然而,当我有时点击这些按钮时,它们会响应,但有时不会。例如,如果我点击它们10次,它们会响应2到3次。有时他们工作很长时间。我在这件事上花了好几天的时间,但在我的代码中找不到任何问题。有没有人面临过这样的问题?谁能找出真正的问题是什么。顺便说一下,我的应用程序中的所有其他按钮都工作得非常好 这是图片中红色矩形中前3个按钮的代码 import SwiftUI struct F

我的应用程序中有我的个人资料表单。在表单中我有一些按钮。其中5个按钮用于显示自定义下拉菜单,以选择Sax、血液、国籍等。然而,当我有时点击这些按钮时,它们会响应,但有时不会。例如,如果我点击它们10次,它们会响应2到3次。有时他们工作很长时间。我在这件事上花了好几天的时间,但在我的代码中找不到任何问题。有没有人面临过这样的问题?谁能找出真正的问题是什么。顺便说一下,我的应用程序中的所有其他按钮都工作得非常好

这是图片中红色矩形中前3个按钮的代码

import SwiftUI

struct FormPartTwoView: View {
    @Binding var gender: String
    @Binding var blood: String
    @Binding var nationality: String
    
    @Binding var showingGenderPicker: Bool
    @Binding var showingBloodGroupPicker: Bool
    @Binding var showingNationalityPicker: Bool
    @ObservedObject var userProfile = UserProfileViewModel()
    @ObservedObject var userProfileUpdate = UserProfileUpdateViewModel()

    var body: some View {
        GeometryReader { geometry in
            HStack {
                Button(action: {
                    self.showingGenderPicker.toggle()
                    self.showingBloodGroupPicker = false
                    self.showingNationalityPicker = false
                }) {
                    VStack {
                        TextField("Gender", text: self.$gender)
                            .padding(.horizontal)
                            .disabled(true)
                    }
                    .font(.system(size: 13))
                    .frame(height: 40)
                    .overlay(
                        RoundedRectangle(cornerRadius: 5)
                            .stroke(Color("Border2"), lineWidth: 1)
                    )
                }
                .buttonStyle(PlainButtonStyle())

                Button(action: {
                    self.showingBloodGroupPicker.toggle()
                    self.showingGenderPicker = false
                    self.showingNationalityPicker = false
                }) {
                    VStack {
                        TextField("Blood", text: self.$blood)
                            .padding(.horizontal)
                            .disabled(true)
                    }
                    .font(.system(size: 13))
                    .frame(height: 40)
                    .overlay(
                        RoundedRectangle(cornerRadius: 5)
                            .stroke(Color("Border2"), lineWidth: 1)
                    )
                }
                .buttonStyle(PlainButtonStyle())

                Button(action: {
                    self.showingNationalityPicker.toggle()
                    self.showingGenderPicker = false
                    self.showingBloodGroupPicker = false
                }) {
                    VStack {
                        TextField("Nationality", text: self.$nationality)
                            .padding(.horizontal)
                            .disabled(true)
                    }
                    .font(.system(size: 13))
                    .frame(height: 40)
                    .overlay(
                        RoundedRectangle(cornerRadius: 5)
                            .stroke(Color("Border2"), lineWidth: 1)
                    )
                }
                .buttonStyle(PlainButtonStyle())
            }
            .frame(width: geometry.size.width, height: 40)
        }
    }
}

struct FormPartTwoView_Previews: PreviewProvider {
    static var previews: some View {
        FormPartTwoView(gender: .constant(""), blood: .constant(""), nationality: .constant(""), showingGenderPicker: .constant(false), showingBloodGroupPicker: .constant(false), showingNationalityPicker: .constant(false))
    }
}
这是第二个牵引按钮的代码:

import SwiftUI

struct FormPartFiveView: View {
    @Binding var district: String
    @Binding var upazila: String
    @Binding var postcode: String
    
    @Binding var showingUpazilaPicker: Bool
    @Binding var showingDistrictPicker: Bool
    @ObservedObject var userProfileUpdate = UserProfileUpdateViewModel()

    var body: some View {
        GeometryReader { geometry in
            HStack {
                Button(action: {
                    self.showingDistrictPicker.toggle()
                    self.showingUpazilaPicker = false
                }) {
                    VStack {
                        Text("\(self.district == "" ? "District" : self.district)")
                            .foregroundColor(self.district == "" ? Color.gray : Color.black)
                            .padding(.horizontal)
                    }
                    .font(.system(size: 13))
                    .frame(width: geometry.size.width/3.2, height: 40)
                    .overlay(
                        RoundedRectangle(cornerRadius: 5)
                            .stroke(Color("Border2"), lineWidth: 1)
                    )
                }
                .buttonStyle(PlainButtonStyle())
                Button(action: {
                    self.showingUpazilaPicker.toggle()
                    self.showingDistrictPicker = false
                }) {
                    VStack {
                        Text("\(self.upazila == "" ? "Upazila" : self.upazila)")
                            .foregroundColor(self.upazila == "" ? Color.gray : Color.black)
                            .padding(.horizontal)
                    }
                    .font(.system(size: 13))
                    .frame(width: geometry.size.width/3.2, height: 40)
                    .overlay(
                        RoundedRectangle(cornerRadius: 5)
                            .stroke(Color("Border2"), lineWidth: 1)
                    )
                }
                .buttonStyle(PlainButtonStyle())
                VStack {
                    TextField("Postcode", text: self.$postcode)
                        .padding(.horizontal)
                }
                .font(.system(size: 13))
                .frame(width: 100, height: 40)
                .overlay(
                    RoundedRectangle(cornerRadius: 5)
                        .stroke(Color("Border2"), lineWidth: 1)
                )
            }
            .frame(width: geometry.size.width, height: 40)
        }
    }
}

struct FormPartFiveView_Previews: PreviewProvider {
    static var previews: some View {
        FormPartFiveView(district: .constant(""), upazila: .constant(""), postcode: .constant(""), showingUpazilaPicker: .constant(false), showingDistrictPicker: .constant(false))
    }
}

为什么要在按钮中输入文本字段?我想这就是原因,所以只需将它们与文本标签和文本字段分开即可。我也尝试过仅使用文本视图。但还是一样的行为。