【问题标题】:Disable user interaction for NSImageView禁用 NSImageView 的用户交互
【发布时间】:2014-07-14 10:53:41
【问题描述】:

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

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

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

提前谢谢大家:)

【问题讨论】:

    标签: cocoa user-interaction nsimageview


    【解决方案1】:

    创建NSImageView的自定义类,实现鼠标输入和鼠标退出方法,定义为空

    【讨论】:

    • 它不工作,静止图像是可拖动的!实际上我在窗口上有一个图像视图(背景)。然后是一组图像就可以了。 NSViewController 类是它的文件所有者。但是,对于我们的内容视图,您建议创建一个 NSImageView 的子类,然后使用空定义实现鼠标输入和鼠标退出。注意:所有图像和插座都在文件所有者(NSViewController 子类)中声明。静止图像是可拖动的:(
    • 一旦图像被删除,而是从数组中删除拖动的图像解决了我的问题,谢谢:)。想知道为什么你给我的解决方案不起作用
    【解决方案2】:

    在我看来,最简单的解决方案是继承 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 实例大小不成比例地缩放。

    【讨论】:

      猜你喜欢
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      相关资源
      最近更新 更多