我正在构建一个主要使用 SwiftUI 的应用程序,但我必须使用 UIKit ViewController 与 PencilKit 交互。我正在使用UIViewControllerRepresentable
在它们之间进行接口。
所以我有一个视图控制器,我用它来设置我的应用程序的PencilKit部分,在其中我必须设置一个依赖于UIResponder的PKToolPicker。为此,我必须编写以下代码:
canvasView = PKCanvasView(frame: view.bounds)
toolPicker.setVisible(true, forFirstResponder: canvasView)
canvasView.becomeFirstResponder()
我在这里使用的这个canvasView视图是控制绘图区域的视图,您通常必须将其设置为上述ViewController的子视图。问题是,在我的情况下,这个视图控制器嵌套在嵌套在 SwiftUI 视图中的UIViewControllerRepresentable
中。因此,我需要将此 SwiftUI 视图添加为第二个 FirstResponder,否则每次我在 SwiftUI 视图上运行手势时,PKTool 都会消失,因为 canvasView 不再是第一响应者。
所以我的问题是我该怎么做?如何将 SwiftUI 视图设置为第一响应者?找不到如何获取 SwiftUI 的 UIResponder 对象,所以我可以将其添加为第一响应者,有人知道如何吗?
我不太清楚你的具体问题,但我假设在你的 UIViewControllerRepresentable 中你也有
canvasView.becomeFirstResponder()
就在你之前
toolPicker.setVisible(true, forFirstResponder: canvasView)