我正在尝试实现一个分段选择器,并添加一个附加行为,即再次点击所选选项即可取消选择。但是,此代码似乎无法按预期运行。
Picker("",selection: $selectedOption) {
ForEach(["A","B","C","D","E"], id:\.self) { option in
Text(option)
.onTapGesture {
if selectedOption == option {
selectedOption = ""
}
}
}
}
.pickerStyle(.segmented)
这种行为可以通过将所选选项与覆盖层叠加并将点击手势附加到覆盖层来实现。点击后,可以取消选择。
.matchedGeometryEffect
。.matchedGeometryEffect
,但在后台使用不可见的占位符是可行的。.contentShape
到透明覆盖层,使其能够接受点击手势。