如何从另一个窗口检测拖动的窗口?

时间:2013-05-10 07:32:41

标签: objective-c macos cocoa drag-and-drop

在我的应用程序中,我想动态创建窗口(NSWindows)并有一个特殊窗口(也是NSWindow,我调用转储空间),我可以拖动其他窗口关闭它们。

基本上,转储空间应该检测我何时“删除”窗口,以便它可以触发释放和关闭窗口的操作。

我可以使用Cocoa拖放模型吗?如果不是,我想知道我可以做的一些解决方法,以模拟这些行为。

1 个答案:

答案 0 :(得分:1)

在转储空间类中实现NSDraggingDestination协议,该协议有几条消息来处理拖动操作。在performDragOperation中:您可以处理您的窗口。我建议在开始拖动mouseDown:mouseMoved:窗口的类中实现NSDraggingSource。这样,您可以定义自己的用于拖动窗口的粘贴板数据类型。然后可以在转储空间中使用它来查看实际丢弃的内容并触发窗口处理。对于所有必需的in this example,这是一个相对复杂的示例。