我正在尝试创建一个窗口,我已创建该窗口以接受从finder中删除的文件,当我尝试将文件拖到窗口时发生的所有事情都会重新回到它在桌面上的位置。显然,我没有正确设置。
我正在做的NSWindowController:initWithWindow:
内:
[self.window registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, nil]];
我也试过把这一行放在视图中,但没有运气。我错过了什么?是否还需要在.xib文件中设置?
我需要在哪里放置-(BOOL)performDragOperation:
功能?这是我的自定义NSWindowController类吗?那是什么失败了?
答案 0 :(得分:1)
您是否关注(或阅读)了documentation?相关部分的标题为“接收拖动操作。
最重要的是,对于一般视图(或窗口),您需要实现-draggingEntered:作为第一步并返回正确的NSDragOperation(或至少不是NSDragOperationNone)来“验证”建议的丢弃。如果不回答这个问题,甚至不允许掉线(所以你永远不会收到-prepareForDragOperation:, - performDragOperation:或-concludeDragOperation :)。
需要考虑的其他事项:你真的希望整个窗口充当拖动目的地吗?更常见的情况是,最好使用一个特定的视图,在调用-draggingUpdated:时为用户提供视觉反馈。