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
我创建了一个 @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