【发布时间】:2013-08-21 11:10:08
【问题描述】:
好的,这就是我需要的(尽管我仍然没有找到我的问题的真正答案):
- 我有一个简单明了的
WebView - 我需要能够在
WebView上放置物品。
我已经尝试通过WebUIDelegate 及其方法,甚至registerForDraggedTypes,但仍然没有成功。
有什么想法吗?有没有一个完整的例子来说明如何做到这一点?
【问题讨论】:
标签: objective-c macos cocoa webview
好的,这就是我需要的(尽管我仍然没有找到我的问题的真正答案):
WebView
WebView 上放置物品。我已经尝试通过WebUIDelegate 及其方法,甚至registerForDraggedTypes,但仍然没有成功。
有什么想法吗?有没有一个完整的例子来说明如何做到这一点?
【问题讨论】:
标签: objective-c macos cocoa webview
我在我的申请中做了,以下是重点,如果你还在寻找它,
让它接受放到 webview 中
[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;
}
【讨论】: