【问题标题】:How to drag an image view within a window using swift (OS X not IOS)如何使用 swift 在窗口内拖动图像视图(OS X 不是 IOS)
【发布时间】:2015-09-29 00:28:55
【问题描述】:

我正在创建一个 Mac 应用程序,但在拖动视图上带有图像的窗口时遇到了困难。基本上我可以拖动主窗口,但在单击并拖动图像视图时无法拖动窗口。

我可以使用“window.movableByWindowBackground = true”在主窗口上启用拖动功能,但在窗口上拖动图像视图时无法正常工作。

任何帮助将不胜感激。

【问题讨论】:

    标签: macos swift draggable


    【解决方案1】:

    诀窍是继承 NSImageView 并覆盖 mouseDownCanMoveWindow 属性:

    class MyImageView: NSImageView {
    
        override var mouseDownCanMoveWindow:Bool {
            return true
        }
    
    }
    

    【讨论】:

    • 感谢您的快速回复。我可以将该功能添加到另一个类,这会工作吗?抱歉我的无知,因为我对 swift 有点陌生。
    • 不客气。不用道歉。 :) 你不能在另一个类中使用这个代码而不是你的 imageview 的子类,如果这就是你要问的。如果您在创建子类时遇到问题,我可以在答案中添加详细信息,但这通常非常简单。
    • 由于我目前只是在试验,我创建了一个新的 swift 文件,然后添加了上面的代码,将类添加到图像视图中并且效果很好。这是否是实现这一目标的最有效方式,此时任何建议或代码 sn-ps 将是有益的。谢谢。
    • 这是我所知道的最有效的方法。还有其他方法,比如在鼠标光标之后手动重绘窗口(我已经在一个我无法子类化图像视图的应用程序中完成了它),但它既麻烦又笨拙。在我看来,像我的回答那样覆盖这个属性对你来说是正确的选择。 :)
    • 你建议的方式正是我所需要的,我只是想知道是否可以在没有单独的类文件的情况下以同样的方式完成,但不用担心这是否是实现这一目标的最佳方式.谢谢..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    相关资源
    最近更新 更多