Oli*_*ère 5 cocoa drag-and-drop webview
我在编辑模式下使用WebView.我已经从WebUIDelegate Procotol实现了这个方法:
- (void)webView:(WebView *)sender willPerformDragDestinationAction:(WebDragDestinationAction)action forDraggingInfo:(id < NSDraggingInfo >)draggingInfo
Run Code Online (Sandbox Code Playgroud)
并使用它来捕获我的WebView上的元素滴.当我检测到从我的应用程序外部拖动文件并包含图片时,我在此方法中构建了img DOM元素并将其添加到我的文档中.
这工作正常,但正如方法的名称所暗示的那样,我只被告知拖动会发生,我无法控制它.
由于Finder始终执行文件拖动操作,因此在编辑模式下在WebView上删除文件时通常会发生的事情是webview显示文件的路径.
我最终将文件路径字符串添加到我的webview和图像中,但我想阻止添加文本.
有没有办法在没有子类化webview的情况下配置它?
我尝试了它,当它工作时,它打破了许多其他的东西,如插入移动的插入等.
Oli*_*ère 10
自己回答这个改变!
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
{
if ([sender draggingSource] == nil)
{
NSPasteboard *pboard = [sender draggingPasteboard];
if ( [[pboard types] containsObject:NSFilenamesPboardType] ) {
NSURL* fileURL;
fileURL=[NSURL URLFromPasteboard: [sender draggingPasteboard]];
NSArray *dragTypes = [NSArray arrayWithObject:NSFileContentsPboardType];
[[sender draggingPasteboard] declareTypes:dragTypes owner:nil];
NSImage *content = [[NSImage alloc] initWithContentsOfURL:fileURL];
[[sender draggingPasteboard] setData:[content TIFFRepresentation] forType:NSPasteboardTypeTIFF];
}
}
return [super performDragOperation:sender];
}
Run Code Online (Sandbox Code Playgroud)
实际上,我所做的确实是继承WebView并拦截performDragOperation以更改拖动粘贴板的内容,如果拖动源位于我的应用程序之外并且不包含图像但只包含文件名.
| 归档时间: |
|
| 查看次数: |
2538 次 |
| 最近记录: |