1


在我的应用程序中,我有一个 NSOutlineView,其中包含一些文件列表和一个 WebView,
用户允许将任何项目从大纲视图拖到 WebView,然后,我想处理数据库事务,

在大纲视图中,我实现了以下方法,

- (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,

谁能帮助我,
亲切的问候
罗汉

4

1 回答 1

2

大家
好,感谢您查看它,它已通过覆盖解决

- (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender{
    [self log:@"Inside Dragging updated"];
    return NSDragOperationEvery;
}

虽然在文档中提到它是一个选项,如果它没有实现,它将从 dragEnter 方法中获取返回值,

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

于 2011-04-08T11:05:07.453 回答