SwiftUI sheet 在任何地方点击时呈现

SwiftUI sheet presenting on tapping anywhere

我创建了一个 @StateObject 从那里显示登录页面:

@StateObject var loginViewModel = //LoginViewModel Name

而且Vstack里面有一个这样的Button

VStack{

Button(action : {loginViewModel.show.toggle()} )

{
HStack{
Text("Button")
}

}. sheet (isPresented : $loginViewModel.show){
//View (passing viewModel)
}

}

问题是可点击区域现在扩展到整个屏幕。也就是说,当我点击屏幕上的所有其他元素(屏幕上几乎所有地方)而不是那个按钮区域时,我正在获取登录视图。

有什么解决方案可以将按钮操作限制在那个按钮周围吗?

我为解决这个问题所做的是删除整个按钮并添加一个 onTapGesture 而不是那个。

我发现的原因是当一个视图中有多个 ZStacks 时,其中一个中注册的触摸事件将传递给当前在视图中的所有其他人。调整 ZIndex 没有帮助。另外,我不能限制触摸其他区域,因为它们上面也有按钮。

例如:

HStack {
//Button Label Code
} .onTapGesture{

}//Button Action