我正尝试在NSView中实现smartMagnify:,但它从未被调用过。我有rotate:、magnify:等,它们都被成功调用-我需要做什么才能收到这条消息?我搜索了文档,它非常稀疏,找不到为什么不调用它的原因。
以下是我认为与我的代码相关的所有内容。
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
}
// ...
}通过迷信,我尝试将自己设置为First Responder,以防与此有关,但这并没有什么不同。
发布于 2017-11-22 03:01:28
当您用两个手指双击时,会触发此事件。
https://stackoverflow.com/questions/43277127
复制相似问题