激活 contextMenu 时 UIViewRepresentable 视图消失

Vya*_*kov 2 contextmenu swiftui uiviewrepresentable

我正在尝试将上下文菜单与 UIViewRepresentable 一起使用。当上下文菜单被激活时,UIViewRepresentable 消失。

这是代码:

UIView可表示的视图:

struct TestView: UIViewRepresentable {
    func makeUIView(context: Context) -> some UIView {
        let view = UIView(frame: CGRect(x: 0, y: 0, width: 150, height: 150))
        view.backgroundColor = UIColor.red
        return view
    }
    func updateUIView(_ uiView: UIViewType, context: Context) {
        //
    }
}
Run Code Online (Sandbox Code Playgroud)

内容查看:

struct ContentView: View {
    var body: some View {
        TestView()
            .frame(width: 200, height: 200)
            .contextMenu {
                Text("Context Menu")
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何让UIViewRepresentable不消失?

a7m*_*7md 5

我遇到了同样的问题,发现该clipped()修改器在 iOS 15.0 及更高版本上运行良好。但这并不能解决 iOS 14 上的问题。

当我尝试不同的方法时,我发现这些方法compositingGroup()修复了 iOS 14.0 及更高版本(包括 iOS 15)上的问题。

struct ContentView: View {
    var body: some View {
        TestView()
            .frame(width: 200, height: 200)
            .compositingGroup()
            .contextMenu {
                Text("Context Menu")
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

UIViewRepresentable 在 contextMenu 中正确呈现