如何取消Mac应用程序中的拖动

时间:2014-01-20 19:32:18

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

我有一个具有画布(NSView)的应用程序,用户可以在其中拖动元素。当鼠标离开该视图的边缘时,它将成为拖动操作。

我想要做的是当鼠标再次进入原始视图时它会取消操作,并会再次在画布内自动开始移动。

我可以弄清楚第二部分我只需要弄清楚如何强制拖放取消。我需要以某种方式从draggingEntered中做到这一点:所以在鼠标被释放之前。

1 个答案:

答案 0 :(得分:1)

让画布视图也响应拖动。最初它的所有<NSDraggingDestionation>协议方法都会返回“不,什么都不做”,但是如果你从画布中开始拖动就会跟踪它,一旦拖动离开并返回你的NSDraggingDestionation方法就会返回,“好的,我们接受,拖动结束,不要打扰动画。”

然后你可以继续本地跟踪。比如,假设您的画布已调用:

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

然后该方法会将控件返回到画布