如何手动将 SwiftUI 视图设置为第一响应者?



我正在构建一个主要使用 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)

最新更新