禁用NSImageView的用户交互

时间:2014-07-14 10:53:42

标签: cocoa user-interaction nsimageview

我有2套图像。一组包含可拖动的组,另一组包含静态组。我已经为可拖动图像实现了拖放功能。这是因为需要将图像拖动到包含匹配项的静态图像。现在将拖动的图像放在静态图像上后,与它无关,因此我想禁用图像的用户交互(因为它仍然可以拖动)。

我已经探索了几个解决方案和SO问题herethere,但没有一个解决方案有帮助!

有人可以帮我解决如何删除NSImageView的拖动或用户交互吗?

提前感谢大家:)

2 个答案:

答案 0 :(得分:1)

创建NSImageView的自定义类,并使用空定义

实现鼠标输入和鼠标退出方法

答案 1 :(得分:0)

我认为最简单的解决方案是将NSView子类化。您的自定义视图应该只包含要在其中绘制的图像变量。之后,您可以使用自定义视图代替默认的NSImageView,它将通过鼠标事件。

示例:

class ImageView: NSView {

    var image: NSImage?

    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)
        if let image = image {
            image.draw(in: bounds)
        }
    }

}

请注意,目标图像将不成比例地缩放为您的ImageView实例大小。