PaperKit(もちろんベータ版)をSwiftUIで試す2 Delegate追加
PaperKit
Documentより
https://developer.apple.com/documentation/paperkit
図面、図形、一貫したマークアップ体験をAppに追加します。
WWDC25動画
https://developer.apple.com/jp/videos/play/wwdc2025/285
サンプルコード
Delegateを追加。
プロトコルはPaperMarkupViewControllerに内包しているため、PaperMarkupViewController.Delegateとなる。
次に修正するが、
MarkupEditViewController.Delegate
のところは、間違っているということだ。
import Foundation import SwiftUI import UIKit import PaperKit import PencilKit struct PaperMarkupViewControllerRepresentable: UIViewControllerRepresentable { let viewSize: CGSize func makeUIViewController(context: Context) -> PaperMarkupViewController { let markupModel = PaperMarkup(bounds: CGRect(x: 0, y: 0, width: self.viewSize.width, height: self.self .viewSize.height)) let paperViewController = PaperMarkupViewController(markup: markupModel, supportedFeatureSet: .latest) paperViewController.view.becomeFirstResponder() let toolPicker = PKToolPicker() toolPicker.addObserver(paperViewController) paperViewController.pencilKitResponderState.activeToolPicker = toolPicker paperViewController.pencilKitResponderState.toolPickerVisibility = .visible paperViewController.addButtonAction(toolPicker: toolPicker) paperViewController.delegate = context.coordinator return paperViewController } func updateUIViewController(_ paperMarkupViewController: PaperMarkupViewController, context: Context) { } class Coordinator: NSObject, PaperMarkupViewController.Delegate { let parent: PaperMarkupViewControllerRepresentable init(parent: PaperMarkupViewControllerRepresentable) { self.parent = parent } func paperMarkupViewControllerDidChangeMarkup(_ paperMarkupViewController: PaperMarkupViewController) { print("\(#function)") } func paperMarkupViewControllerDidChangeSelection(_ paperMarkupViewController: PaperMarkupViewController) { print("\(#function)") } func paperMarkupViewControllerDidBeginDrawing(_ paperMarkupViewController: PaperMarkupViewController) { print("\(#function)") } func paperMarkupViewControllerDidChangeContentVisibleFrame(_ paperMarkupViewController: PaperMarkupViewController) { print("\(#function)") } } func makeCoordinator() -> Coordinator { Coordinator(parent: self) } } extension PaperMarkupViewController { func addButtonAction(toolPicker: PKToolPicker) { toolPicker.accessoryItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(plusButtonPressed(_:))) } @objc func plusButtonPressed(_ button: UIBarButtonItem) { let markupEditViewController = MarkupEditViewController(supportedFeatureSet: .latest) markupEditViewController.delegate = self as? any MarkupEditViewController.Delegate markupEditViewController.modalPresentationStyle = .popover markupEditViewController.popoverPresentationController?.barButtonItem = button self.present(markupEditViewController, animated: true) } }