我正在尝试利用PDFPageOverlayViewProvider
PDFView
的协议(protocol)PDFKit
中的类(class)iOS 16 引入的框架,用于显示 PencilKit
PKCanvasView
位于 PDF 文档之上,以便用户可以在 PDF 上绘制内容。
我想要完成的事情基本上与 WWDC22 Session 10089 中所示的相同。 。遗憾的是,没有提供包含此功能的示例代码。
这是我的问题:我设法添加 PKCanvasView
通过 PDFPageOverlayViewProvider
到 View 层次结构协议(protocol),但我无法绘制任何东西。我使用 this technique 调试了触摸事件触摸似乎被转发到 PDFDocumentView
,这是 PDFView
的内部 subview 和我的 PKCanvasView
的 parent .
如何确保使用 Apple Pencil 进行的触摸事件转发到 PKCanvasView
无需禁用 PDFView
的滚动和平移功能?
最佳答案
这是解决方案:
将此代码放入overlayprovider的pdfView
函数中:
if (view.documentView != nil){
for sv in view.documentView!.subviews {
if (sv.theClassName == "PDFPageView" ){
sv.isUserInteractionEnabled = true
}
}
}
对于theClassName
,您应该像这样扩展NSObject
:
extension NSObject {
var theClassName: String {
return NSStringFromClass(type(of: self))
}
}
关于ios - PDFKit - PDFPageOverlayViewProvider 与 PKCanvasView 不转发触摸事件 - WWDC22 session 10089,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73960885/