Webview作为拖动目的地?

时间:2013-08-21 11:10:09

标签: objective-c macos cocoa webview

好的,所以这就是我需要的东西(虽然我仍然没有找到我的问题的真实答案):

  • 我有一个简单明了的WebView
  • 我需要能够删除WebView上的项目。

我尝试过WebUIDelegate及其方法,甚至是registerForDraggedTypes,但仍然没有成功。

有什么想法吗?有没有一个完整的例子说明如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

我在我的申请中做到了,如果你还在寻找,以下是关键点,

让它接受放入网页视图

[self registerForDraggedTypes:
 [NSArray arrayWithObjects:MyPrivateTableViewDataType,NSFilenamesPboardType,nil]];

处理拖动以验证/验证正在拖动的项目。

- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender{
    pboard = [sender draggingPasteboard];

    if ( [[pboard types] containsObject:MyPrivateTableViewDataType] ) {
        if (sourceDragMask & NSDragOperationGeneric) {
            return NSDragOperationGeneric;
        }
    }

}
- (BOOL)prepareForDragOperation:(id < NSDraggingInfo >)sender{
    NSPasteboard *pboard;

    pboard = [sender draggingPasteboard];

    if ( [[pboard types] containsObject:MyPrivateTableViewDataType] ) {
        // Only a copy operation allowed so just copy the data
        return YES;
    }
    else if ( [[pboard types] containsObject:NSURLPboardType] ) {
        return YES;

    }
    return NO;
}

最后执行/完成拖放

- (BOOL)performDragOperation:(id < NSDraggingInfo >)sender{

    NSPasteboard *pboard;

    pboard = [sender draggingPasteboard];

    if ( [[pboard types] containsObject:MyPrivateTableViewDataType] ) {
        // Only a copy operation allowed so just copy the data
            return YES;
        }
        else{
            return NO;
        }

    } else if ( [[pboard types] containsObject:NSURLPboardType] ) {
        NSURL *url = [NSURL URLFromPasteboard: pboard];
        NSString *filePath= [url path];
        return YES;
    }

    return NO;
}