Cocoa WebView拖放

时间:2011-04-08 08:28:40

标签: objective-c cocoa webview nsoutlineview nsdragginginfo


在我的应用程序中,我有一个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,

任何人都可以帮助我,
亲切的问候 罗汉

1 个答案:

答案 0 :(得分:2)

嗨伙计们 谢谢你的关注, 通过覆盖

解决了这个问题
- (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender{
    [self log:@"Inside Dragging updated"];
    return NSDragOperationEvery;
}

虽然在文档中它被作为选项提及,如果没有实现,它将从dragEnter方法获取返回值,

也许对于我自己的数据类型,它会有NONE格式的WebView方法,并且一旦我覆盖它就可以工作 亲切的问候 罗汉