2013-05-10 107 views
1

在我的應用程序中,我想動態創建窗口(NSWindows)並且有一個特殊的窗口(這也是NSWindow,我稱之爲轉儲空間),我可以拖動其他窗口關閉它們。如何檢測從另一個窗口拖動的窗口?

基本上,轉儲空間應該檢測當我「放」一個窗口,因此它可以觸發操作來釋放和關閉窗口。

我可以使用Cocoa拖放模型嗎?如果沒有,我想知道一些解決方法,我可以做,以模擬這些行動。

回答

1

在您的轉儲空間類實現NSDraggingDestination協議,它有幾個消息來處理拖動操作。在performDragOperation中:你可以處理你的窗口。我建議在開始拖動窗口mouseDown:mouseMoved:的類中實現NSDraggingSource。通過這種方式,您可以定義自己的用於拖動窗口的粘貼板數據類型。然後可以在轉儲空間中使用它來查看實際上丟棄的內容並觸發窗口處理。所有要求的in this example都有一個相對複雜的例子。

+0

這個例子是相反的:將一個項目拖出視圖創建一個窗口。提問者是如何詢問如何將窗口拖到視圖中以使用它並將其變爲項目。 – 2013-05-12 18:33:03

+0

接受答案,因爲我做了類似的事情。我使用'NSString'作爲我的板型,實現了一個新的UTI,所以只有我的應用程序可以成爲我的拖動操作的目的地。如果我可能還有一個額外的問題:現在我需要一種基於通過粘貼板傳遞的數據來關閉窗口的方法,我想通過傳遞字符串並將窗口存儲在全局字典中,以便在放入傾倒。有更聰明的方法嗎?謝謝。 – 2013-05-13 13:14:01

+0

是的,我認爲將窗口保存在臨時緩存中(比如字典)是最好的選擇。 – 2013-05-13 14:34:53

相關問題