0

我正在构建一个主要使用 SwiftUI 的应用程序,但我必须使用 UIKit ViewController 来与 PencilKit 交互。我正在使用UIViewControllerRepresentable它们之间的接口。

所以我有一个 ViewController 用来设置我的应用程序的 PencilKit 部分,在其中我必须设置一个依赖于 UIResponder 的 PKToolPicker。为此,我必须编写以下代码:

canvasView = PKCanvasView(frame: view.bounds)
toolPicker.setVisible(true, forFirstResponder: canvasView)
canvasView.becomeFirstResponder()

我这里使用的这个canvasView视图是控制绘图区域的视图,通常你必须将它设置为前面提到的ViewController的子视图。问题是,在我的例子中,这个 ViewController 嵌套在一个UIViewControllerRepresentable嵌套在 SwiftUI 视图中的 a 中。因此,我需要将此 SwiftUI 视图添加为第二个 FirstResponder,否则每次我在 SwiftUI 视图上运行手势时,PKTool 都会消失,因为 canvasView 不再是第一响应者。

所以我的问题是我该怎么做?如何将 SwiftUI 视图设置为第一响应者?找不到如何获取 SwiftUI 的 UIResponder 对象,所以我可以将它添加为 FirstResponder,有人知道怎么做吗?

4

1 回答 1

0

我不太清楚你的具体问题,但我认为在你的 UIViewControllerRepresentable 中你也有

canvasView.becomeFirstResponder()

就在你之前

toolPicker.setVisible(true, forFirstResponder: canvasView)
于 2020-03-21T01:41:45.523 回答