PDF Аннотация и действия мыши в Swift - PullRequest
0 голосов
/ 16 апреля 2020

Я хотел бы изменить указатель мыши, когда он входит в область PDF-аннотации текущей страницы. Я пробовал следующий код, но он не работает.

override func mouseEntered(with event: NSEvent)
{
    let locationOnPDFView = self.convert(event.locationInWindow, from: self)
    let locationOnPage = self.convert(locationOnPDFView, to: self.currentPage!) 
    for each in arrayOfImageAnnotations
    {
        if each.bounds.contains(locationOnPage)
        {
            NSCursor.pointingHand.set()
            break
        }
        else
        {
            NSCursor.arrow.set()
        }
    }
}

Обновление

Я обнаружил, что проблема не в этом коде. После добавления pdfannotation на pdf-страницу положение (.bounds) этого pdf-примечания отличается от того, что вы видите на pdf-странице. Таким образом, если указатель мыши на изображении, форма указателя не меняется. Положение (.bounds) pdfannotation смещается, и когда указатель мыши на этом свободном от изображения месте, форма указателя мыши изменяется, как и ожидалось. Но почему .pdfannotation не в том месте, где изображение видно?

Я использую следующий код для добавления pdfannotation:

@IBAction func addImageAnnotationToPDFview(_ sender: AnyObject)
{
    let currentPDFpage = myViewPDF.currentPage
    let pageBounds = currentPDFpage!.bounds(for: PDFDisplayBox.trimBox)

    let image = imageViewForPDF.image

    let imageBounds = CGRect(x: pageBounds.midX - (image!.size.width / CGFloat(2.0)) , y: pageBounds.midY - (image!.size.height / CGFloat(2.0)),  width: image!.size.width, height: image!.size.height)

    if #available(OSX 10.13, *)
    {
        let imageForPDFAnnotation = PDFannotationImage(image: image!, bounds: imageBounds, forType: PDFAnnotationSubtype.stamp, withProperties: nil)

        currentPDFpage!.addAnnotation(imageForPDFAnnotation)
        arrayOfImageAnnotations.append(imageForPDFAnnotation)

        myViewPDF.arrayOfImageAnnotations = arrayOfImageAnnotations


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...