3

I am trying to implement smartMagnify: in an NSView, but it is never called. I have rotate:, magnify:, etc., and they are all being called successfully - what do I need to do to receive this message? I've searched the documentation, which is extremely sparse, and can find no reason why it's not called.

Here's as much as I think is relevant of my 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
    }
    // ...
}

Just through superstition, I have tried setting myself as First Responder, just in case it was something to do with that, but that makes no difference.

Grimxn
  • 22,115
  • 10
  • 72
  • 85

1 Answers1

0

This event fires when you do double tap with two fingers.

Taras Shchybovyk
  • 416
  • 4
  • 17