在我的应用程序中,我有一个NSOutlineView包含一些文件列表和一个WebView,
用户允许将任何项目从“大纲”视图拖动到WebView,并且就此而言,我假设要处理数据库事务,
在Outline视图中,我实现了以下方法,
- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard{
[self log:@"write Items”];
// Some other code to prepare the Write Item,
}
- (NSDragOperation)outlineView:(NSOutlineView *)outlineView validateDrop:(id < NSDraggingInfo >)info proposedItem:(id)item proposedChildIndex:(NSInteger)index{
}
- (BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id < NSDraggingInfo >)info item:(id)item childIndex:(NSInteger)index{
}
在WebView方面,我实现了以下方法,
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender {
NSPasteboard *pboard;
NSDragOperation sourceDragMask;
[self log:@"Inside draggingEntered”];
return NSDragOperationEvery;
}
- (BOOL)prepareForDragOperation:(id < NSDraggingInfo >)sender{
}
- (BOOL)performDragOperation:(id < NSDraggingInfo >)sender{
}
现在当我将一个元素从大纲视图拖到WebView时,我可以看到,大纲视图的writeItem被调用,
在Webview中,DragEnter从哪里调用,我不返回拖动操作NONE,但返回NSDragoperationEvery,
问题在于,我没有获取方法,prepareForDragOperation和PerformDragOperation,
任何人都可以帮助我,
亲切的问候
罗汉
答案 0 :(得分:2)
嗨伙计们 谢谢你的关注, 通过覆盖
解决了这个问题- (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender{
[self log:@"Inside Dragging updated"];
return NSDragOperationEvery;
}
虽然在文档中它被作为选项提及,如果没有实现,它将从dragEnter方法获取返回值,
也许对于我自己的数据类型,它会有NONE格式的WebView方法,并且一旦我覆盖它就可以工作 亲切的问候 罗汉