SwiftUI .popover 弹窗故障的解决方案是什么?
SwiftUI Popover 多控件快速触发时显示异常
复现步骤
- 点击“One”打开其popover
- 随后快速点击“Two”,再点击“Three”
异常现象
快速操作后,“Two”和“Three”的showingPopover状态都会被触发(红色边框显示为选中),但最终没有任何popover弹窗显示;手动取消其中一个的选中状态(再次点击对应按钮)后,另一个的popover才会正常弹出。红色边框仅用于直观标识当前控件的showingPopover状态。
故障说明
快速触发多个控件的popover后,会出现无弹窗显示的异常,取消一个选中状态后另一个弹窗才会出现。
代码示例
struct TestView: View { var body: some View { HStack { ControlView(title: "One") ControlView(title: "Two") ControlView(title: "three") } } } struct ControlView: View { let title: String @State private var showingPopover = false var body: some View { Button(action: { showingPopover.toggle() }) { Text(title) .border(.red, width: showingPopover ? 1 : 0) } .popover(isPresented: $showingPopover) { Text(title) .presentationCompactAdaptation(.popover) } } } #Preview { TestView() }
内容的提问来源于stack exchange,提问作者trapper
相关产品推荐
相关产品推荐

