2014-01-20 31 views
0

我有一個具有畫布(NSView)的應用程序,用戶可以在其中拖動元素。當鼠標離開該視圖的邊緣時,它變成一個拖動操作。如何在Mac應用程序中取消拖動

我想要做的是,當鼠標再次進入原始視圖時,它將取消操作並自動在畫布內再次開始移動。

我可以弄清楚第二部分我只需要弄清楚如何強制拖放來取消。我需要以dragingEntered的方式做到這一點:所以在鼠標被釋放之前。

回答

1

使您的畫布視圖也響應拖動。最初所有的<NSDraggingDestionation>協議方法都會返回「no,什麼都不做」,但是如果你從畫布中開始拖動,你會跟蹤它,一旦拖動離開並返回,你的NSDraggingDestionation方法將返回,「Ok ,我們接受,拖動結束,不要打擾動畫。「

然後你可以繼續本地跟蹤。就像,假設你的畫布呼籲:

- (void)dragImage:(NSImage *)anImage at:(NSPoint)viewLocation offset:(NSSize)initialOffset event:(NSEvent *)event pasteboard:(NSPasteboard *)pboard source:(id)sourceObj slideBack:(BOOL)slideFlag; 

這種方法會然後返回控制你的畫布

相關問題