与 UIKit PKCanvasView 下面的 SwiftUI 视图交互

问题描述

我有一个视图结构如下:

ZStack {
    UIKitView //PKCanvasView
        .zIndex(1)
    SwiftUIView //SwiftUI view which has a gesture recogniser 
        .zIndex(0)
}

我想知道让 SwiftUI 视图下方的 UIKit 视图同时交互的最佳方法是什么。

如果 SwiftUI 视图在顶部的 UIKit 视图上有一个 higher priority gesture,则效果最佳。

我的 UIKit 可表示视图如下:

struct CanvasView: UIViewRepresentable {
    
    @Binding var canvasView: PKCanvasView
    @Binding var isFirstResponder: Bool
    
    @State var toolPicker = PKToolPicker()
    
    func makeUIView(context: Context) -> PKCanvasView {
        
        canvasView.drawingPolicy = .pencilOnly
        canvasView.backgroundColor = .clear
        canvasView.isOpaque = false
        canvasView.alwaysBounceVertical = true
        canvasView.alwaysBounceHorizontal = true
        
        
        toolPicker.setVisible(true,forFirstResponder: canvasView)
        toolPicker.addobserver(canvasView)
        //canvasView.becomeFirstResponder()
        
        return canvasView
    }
    
    func updateUIView(_ uiView: PKCanvasView,context: Context) {
        if isFirstResponder != uiView.isFirstResponder {
           if isFirstResponder {
               uiView.becomeFirstResponder() 
           } else {
               uiView.resignFirstResponder()
           }
       }
    }
    
}

理想情况下,我想处理 SwiftUI 中的视图分层,因为实际上在画布视图下方有多个 SwiftUI 视图,当按住并拖动时(这是我应用的复合手势)他们)应该出现在它上面。 (这是使用动态 zIndex 实现的)。我对 UIKit 不太满意,不知道如何使用子视图和 UIViewRepresentable 结构在那里执行此操作。

任何帮助将不胜感激!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)