Button SwiftUI在按钮上触发操作,而无需用户单击按钮

Button SwiftUI在按钮上触发操作,而无需用户单击按钮,button,swiftui,Button,Swiftui,我创建了一个非常简单的登录视图。 我观察到一种非常奇怪的行为。当我在文本框内单击时,该单击最终会触发“登录”按钮上的“操作”。以下是负责设置此部分视图的代码 var body: some View{ ZStack{ VStack(alignment: .center){ TextField("Login", text: $model.userName).padding().border(/*@START

我创建了一个非常简单的登录视图。

我观察到一种非常奇怪的行为。当我在文本框内单击时,该单击最终会触发“登录”按钮上的“操作”。以下是负责设置此部分视图的代码

var body: some View{
        ZStack{
            VStack(alignment: .center){
                TextField("Login", text: $model.userName).padding().border(/*@START_MENU_TOKEN@*/Color.black/*@END_MENU_TOKEN@*/, width: 1).cornerRadius(2.0)
                SecureField("Password",text:$model.password).padding().border(Color.black, width:1).cornerRadius(2.0)
                Toggle(isOn:$model.rememberMe){
                    Text("Remember me")
                }
                if (model.loginFailed){
                    Text(model.errorMessage!).font(.footnote).foregroundColor(.red).animation(.easeIn)
                }
                VStack{
                    Button(action: signIn) {
                        Text("Login")
                    }
                    Button(action:recoverPassword){
                        Text("Forgot Password?")
                    }
                }
                }.padding().zIndex(100).disabled(model.loginInProgress)
            LoginInProgressIndicator().animation(.easeIn).zIndex(model.loginInProgress ? 200: 0).opacity(model.loginInProgress ? 0.9 : 0)
        }
    }
一段时间内,第一次在任一文本框内单击按钮就会触发“操作”。有时,在我尝试了几次点击文本框的尝试后,它会触发。底线是“登录”按钮上的“操作”被触发,而无需点击按钮

代码的设置方式是否有问题。或者当按钮是一个组或某物的一部分时,需要做一些特殊的事情来处理按钮上的“动作”

任何帮助都将不胜感激

更新: 我添加了一些老式的诊断来检查视图中两个按钮的“动作”行为。原来,文本框中的时钟触发了两个按钮的动作。打印消息总是成对出现

更多更新
这个问题更为普遍。单击toplevel VStack中的任意位置,将导致按钮上的操作触发器。

问题在于该部分周围有一个表单元素。我有一个使用表单的附件视图。此登录输入部分视图包含在其中。表单的行为似乎是,无论您在表单中单击什么位置,它都会触发表单中包含的所有按钮操作。这真的不是我所期望的。

问题在于在该部分周围有一个表单元素。我有一个使用表单的附件视图。此登录输入部分视图包含在其中。表单的行为似乎是,无论您在表单中单击什么位置,它都会触发表单中包含的所有按钮操作。这真的不是我所期望的。

我用这个做了更多的实验。即使我在文本框内单击,两个按钮上的“操作”似乎也会同时被触发。我对此做了更多的实验。即使我在文本框内单击,两个按钮上的“操作”似乎同时被触发。