2017-04-07 2 views
2

Ich versuche smartMagnify: in einem NSView zu implementieren, aber es wird nie aufgerufen. Ich habe rotate:, magnify: usw., und sie werden alle erfolgreich aufgerufen - was muss ich tun, um diese Nachricht zu erhalten? Ich habe die Dokumentation durchsucht, die extrem spärlich ist, und kann keinen Grund finden, warum es nicht genannt wird.NSView/NSResponder smartMagnify:

Hier ist so viel wie ich denke, ist relevant für meinen Code ...

class FigOSXLayerView: FigOSXLayerViewBase /* NSView subclass */ { 
    var layerViewController: FigOSXLayerVC? 
    private var _scale: CGFloat = 1.0 

    override func draw(_ dirtyRect: NSRect) { 
     self.properties.showSelectionHighlight = true 
     self.properties.showAnnotation = true 
     self.properties.showPoints = true 
     super.draw(dirtyRect) 
    } 

    // ************************ 
    // MARK: Zoom, pan, rotate 
    // ************************ 
    override func magnify(with event: NSEvent) { 
     self._scale = 1 + event.magnification 
     self.layerViewController?.scale(self._scale) 
    } 

    override func rotate(with event: NSEvent) { 
     self.layerViewController?.rotate(CGFloat(event.rotation.toRadians)) 
    } 

    override func scrollWheel(with event: NSEvent) { 
     self.layerViewController?.translate(dx: event.deltaX, dy: -event.deltaY) 
    } 

    override func smartMagnify(with event: NSEvent) { 
     Swift.print("Smart magnify") // Not called 
    } 
    // ... 
} 

Nur durch Aberglauben, ich habe versucht, mich als First Responder Einstellung, falls es etwas damit zu tun, aber das macht keinen Unterschied.

Antwort

0

Dieses Ereignis wird ausgelöst, wenn Sie zweimal mit zwei Fingern tippen.