0

我正在 Mac 上实现 PDF 查看器,我想让用户添加注释。

我在页面中添加了一个 PDFAnnotationText,它看起来很好,但是当用户单击它时,整个文档会缩小,并且左侧会出现一个注释列表。

我想自定义它以将注释显示为弹出窗口,类似于 Preview 所做的。PDFAnnotationText 类参考说我可以这样做:

每个 PDFAnnotationText 对象都有一个与之关联的 PDFAnnotationPopup 对象。在关闭状态下,注释显示为图标。在打开状态下,它显示为一个包含注释文本的弹出窗口。请注意,您的应用程序必须完成工作以建立一个包含文本的窗口以响应 PDFViewAnnotationHitNotification。

但是,当我为 PDFViewAnnotationHitNotification 添加观察者时,单击注释时不会发送通知。

4

1 回答 1

0

我已经就此事联系了 Apple,我收到的答复是这是一个错误。一种解决方法是自己处理鼠标单击,遍历注释并寻找命中。

像这样的东西(在 PDFView 子类的 mouseDown 处理程序中运行的代码):

NSPoint windowPoint = [self.window convertScreenToBase:[NSEvent mouseLocation]];
NSPoint viewPoint = [self convertPoint:windowPoint fromView:nil];
PDFPage *page = [self pageForPoint:viewPoint nearest:NO];

if (page != nil) {
    NSPoint pointOnPage = [self convertPoint:viewPoint toPage:page];

    for (PDFAnnotation *annotation in page.annotations) {
        NSRect      annotationBounds;

        // Hit test annotation.
        annotationBounds = [annotation bounds];
        if (NSPointInRect(pointOnPage, annotationBounds))
        {
            NSLog(@"Annotation hit: %@", annotation);
        }
    }
}
于 2012-10-23T21:06:51.680 回答