Как установить SwiftUI View в качестве первого респондента вручную? - PullRequest
0 голосов
/ 20 марта 2020

Я создаю приложение, используя в основном SwiftUI, но мне нужно использовать UIKit ViewController для взаимодействия с PencilKit. Я использую UIViewControllerRepresentable для взаимодействия между ними.

Итак, у меня есть ViewController, который я использую для настройки части моего приложения PencilKit, и внутри него я должен установить PKToolPicker, который зависит от ответ UIR. Для этого мне нужно написать следующий код:

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

Это представление canvasView, которое я здесь использую, является видом, управляющим областью рисования, и вам обычно нужно установить его как подпредставление вышеупомянутого ViewController. Проблема в том, что в моем случае этот ViewController вложен в UIViewControllerRepresentable, который вложен в представление SwiftUI. Поэтому мне нужно добавить это представление SwiftUI в качестве второго FirstResponder, иначе PKTool исчезает каждый раз, когда я запускаю жест в представлении SwiftUI, так как canvasView перестает быть первым респондентом.

Поэтому мой вопрос заключается в том, как мне сделать это? Как я могу настроить представление SwiftUI в качестве первого респондента? Не удалось найти способ получения объекта SwiftUI UIResponder, хотя я мог бы добавить его в качестве FirstResponder. Кто-нибудь знает, как это сделать?

1 Ответ

0 голосов
/ 21 марта 2020

Я не совсем понимаю вашу конкретную проблему, но я предположил, что в вашем UIViewControllerRepresentable у вас также есть

canvasView.becomeFirstResponder()

непосредственно перед вашим

toolPicker.setVisible(true, forFirstResponder: canvasView)
...