我正在使用Swift for OS X构建一个应用程序,我有NSTabView
我可以将图像拖入其中。对于每个被拖入的图片,它会添加一个新标签,NSTabViewItem
包含一个NSImageView
,其中包含被拖入的NSImage
。
我创建了一个处理拖动操作的NSTabView
类的子类。
我让代码在拖动图像并正确创建新标签的位置工作。但是,一旦显示NSImageView
(拖入后),现在,当拖动新图像时,NSImageView
会阻止拖动信息并且不会接收拖动操作。因此,如果我将它们放在显示先前拖动图像的NSImageView
上方的边缘,我只能拖动新图像。
有没有办法让NSImageView
对鼠标拖动事件透明,以便它们传递到下面的NSTabView
?
我尝试将NSImageView.enabled
设置为false,并尝试覆盖hitTest
的{{1}}。但这些似乎都没有起作用。
答案 0 :(得分:0)
您可以使用NSView
func unregisterDraggedTypes()
在您创建的NSImageView
上,以阻止他们吃掉粘贴板上的图像。
这应该允许底层的NSTabView
子类接收拖动事件。
或者,如果那不起作用,请放置一个NSView
子类,它将在NSTabview
的顶部接收拖动事件并覆盖hitTest
,以便点击进入下方的视图。
override func hitTest(aPoint: NSPoint) -> NSView? {
return nil
}