gpt4 book ai didi

swift - 操作系统 X : How to pass mouse drag events through a view to superview

转载 作者:行者123 更新时间:2023-11-30 10:03:15 26 4
gpt4 key购买 nike

我正在使用 Swift for OS X 构建一个应用程序,其中有一个可以将图像拖入其中的 NSTabView。对于拖入的每个图像,它都会添加一个新选项卡,并且 NSTabViewItem 包含一个 NSImageView,用于保存拖入的 NSImage

我创建了 NSTabView 类的子类来处理拖动操作。

我的代码可以正常工作,它可以获取拖动的图像并正确创建新选项卡。但是,一旦有 NSImageView 显示(拖入后),现在,当拖动新图像时,NSImageView 会阻止拖动信息并且不会接收拖动手术。因此,如果我将新图像放置在显示先前拖动的图像的 NSImageView 的边缘,我只能拖动新图像。

有没有办法让NSImageView对鼠标拖动事件透明,以便它们传递到下面的NSTabView

我尝试将 NSImageView.enabled 设置为 false,并尝试覆盖 NSImageViewhitTest 。但这些似乎都不起作用。

最佳答案

您可以在NSView上使用该函数

func unregisterDraggedTypes()

在您创建的 NSImageView 上,以阻止它们吃掉粘贴板上的图像。

这应该允许底层的NSTabView子类接收拖动事件。

或者,如果这不起作用,请放置一个 NSView 子类,该子类将在 NSTabview 顶部接收拖动事件,并覆盖 hitTest因此点击可以到达下面的 View 。

override func hitTest(aPoint: NSPoint) -> NSView? {
return nil
}

关于swift - 操作系统 X : How to pass mouse drag events through a view to superview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37332870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com