所以我想将一个对象从一个源拖动到多个潜在目的地.当对象在每个目的地上时,我希望它"变形"为不同的图像.从NSDragSource的角度来看,有一种直接的方法吗?
在 Mac OS X 应用程序 (Cocoa) 中,我使用NSDraggingSession. 它NSDraggingItem利用实现协议的对象NSPasteboardItemDataProvider,在用户删除数据时提供数据。
当我处理图像时,涉及的类型是:NSPasteboardTypePNG、kPasteboardTypeFileURLPromise、kUTTypeFileURL和。这些图像位于远程位置,因此在将它们提供到粘贴板之前,我必须从 Internet 下载它们。com.adobe.photoshop-imagepublic.svg-image
我实现的方法- pasteboard(pasteboard:item:provideDataForType:)是这样的:
如果请求的类型是kPasteboardTypeFileURLPromise,我会获取粘贴位置并在粘贴板中构建和设置 URL 字符串以及将来应该写入文件的位置。
如果请求的类型是kUTTypeFileURL,我会下载该文件,指定临时位置并将下载的文件写入该位置。然后,我在粘贴板中设置该位置的 URL 字符串。
如果请求的类型是其他类型之一,我会下载该文件并NSData在粘贴板中设置纯文本。
所有这些操作都是在主线程上执行的,产生了一些我想消除的滞后。
我尝试在后台线程上执行这些操作,然后返回主线程以在粘贴板中设置最终数据,但这不起作用,因为该方法之前已完成。
有谁知道如何实现它?