gpt4 book ai didi

cocoa - 从 Finder 拖放到 WebView

转载 作者:行者123 更新时间:2023-12-03 16:10:08 27 4
gpt4 key购买 nike

我在编辑模式下使用 WebView。我已经从 WebUIDelegate Procotol 实现了这个方法:

- (void)webView:(WebView *)sender willPerformDragDestinationAction:(WebDragDestinationAction)action forDraggingInfo:(id < NSDraggingInfo >)draggingInfo

并用它来捕获 WebView 上的元素。当我检测到从应用程序外部拖动并包含图片的文件时,我会在此方法中构建 img DOM 元素并将其添加到我的文档中。

这工作正常,但正如该方法的名称所暗示的那样,我只被告知拖动将会发生,而我无法控制它。

由于 Finder 总是进行文件拖动操作,因此在编辑模式下将文件拖放到 WebView 上时通常会发生 WebView 显示文件的路径。

我最终将文件路径字符串添加到我的 WebView 中,还有图像,但我想阻止添加文本。

有没有办法在不子类化 webview 的情况下配置它?

我尝试过,虽然它有效,但它破坏了很多其他东西,例如插入符号移动下降等。

最佳答案

我自己回答这个问题是为了改变!

- (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];


}

实际上,如果拖动源位于我的应用程序之外并且不包含图像而只包含文件名,我所做的确实是子类化 WebView 并拦截 PerformDragOperation 来更改拖动粘贴板的内容。

关于cocoa - 从 Finder 拖放到 WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12742276/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com