Ios 如何确定当前是否在SwiftUI中选择了视图
我想知道我的视图当前是否被选中。 我有一个代表卡片的矩形。一旦我点击卡片,卡片就会进入选中状态并更改属性,如颜色 但一旦我点击其他地方,卡就不应该再处于那种状态了 到目前为止,当我尝试使用Ios 如何确定当前是否在SwiftUI中选择了视图,ios,swift,swiftui,Ios,Swift,Swiftui,我想知道我的视图当前是否被选中。 我有一个代表卡片的矩形。一旦我点击卡片,卡片就会进入选中状态并更改属性,如颜色 但一旦我点击其他地方,卡就不应该再处于那种状态了 到目前为止,当我尝试使用ontapsignate属性时,我没有设法解决这个问题,但是我遇到了一个问题,当我点击卡的外部时,卡不会将状态更改为false,除非我再次点击卡,这是有意义的,但在这种情况下,这似乎是错误的选择 导入快捷界面 结构卡视图:视图{ @选择的状态变量=false 设矩形=矩形() @状态变量矩形颜色:颜色=.pur
ontapsignate
属性时,我没有设法解决这个问题,但是我遇到了一个问题,当我点击卡的外部时,卡不会将状态更改为false,除非我再次点击卡,这是有意义的,但在这种情况下,这似乎是错误的选择
导入快捷界面
结构卡视图:视图{
@选择的状态变量=false
设矩形=矩形()
@状态变量矩形颜色:颜色=.purple
var body:一些观点{
GeometryReader{g in
自选矩形
.foregroundColor(自矩形颜色)
.框架(宽度:g.size.width/2,高度:g.size.width/2)
.ontapsigne{
self.selected.toggle()
self.modifyColors()
}
}
}
func modifyColors(){
如果选择{
矩形颜色=.red
}否则{
矩形颜色=.purple
}
}
}
选定状态为红色,未选定状态为紫色。
因此,我希望当我点击矩形时,颜色变为红色,但如果我点击矩形外部,则颜色不会变为红色。
只有在我点击矩形外部而不是内部时,它才会再次变为紫色。
卡片是紫色的。我选择它,它会变成红色。当我再次点击它时,它应该保持红色。当我点击卡外而不是卡内的某个位置时,它应该只变成紫色(未选中)
包含此矩形的视图:
导入快捷界面
结构ContentView:View{
var body:一些观点{
CardView()
}
}
结构内容视图\u预览:PreviewProvider{
静态var预览:一些视图{
ContentView()
}
}
视图实际在哪里并不重要,我想知道视图周围的空间是否被利用。因此,如果它位于模态或ZStack上的俯视图中,行为应该是相同的。实现这一点的方法是让父视图同时管理选择和手势 CardView只需将@绑定到isSelected并相应更改颜色:
struct CardView: View {
@Binding var isSelected: Bool
var body: some View {
Rectangle()
.fill(self.isSelected ? Color.red : Color.purple)
.aspectRatio(1.0, contentMode: .fit)
}
}
而父节点管理@State并使用手势更新它
struct ContentView: View {
@State var isCardSelected = false
var body: some View {
ZStack {
Color.white
.onTapGesture {
self.isCardSelected = false
}
CardView(isSelected: $isCardSelected)
.onTapGesture {
self.isCardSelected = true
}
}
}
}
您必须在包含卡片的视图中实现选择的手势。然后,行为仍然与以前相同。我编辑了我的初始答案,希望问题变得更清楚。你能把包含CardView的视图也包括进来吗?是的。但事实上,如果它在内容视图或模式中等中,则不会有任何区别。非常感谢您的帮助:)