2017-04-07 75 views
2

我試圖在NSView中實現smartMagnify:,但它永遠不會被調用。我有rotate:,magnify:等,他們都被成功調用 - 我需要做什麼來接收此消息?我搜索了非常稀少的文檔,並且找不到沒有被調用的原因。NSView/NSResponder smartMagnify:

這裏是因爲我認爲這是有關我的代碼儘可能多...

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 
    } 
    // ... 
} 

剛剛經歷迷信,我已經嘗試設置自己作爲第一響應者,以防萬一它是什麼做的是,但這沒有什麼區別。

回答

0

當您用兩個手指進行雙擊時,此事件會觸發。