You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 12:36:04