How do I handle multiple file drag/drop from Finder in Mac OS X 10.5?

…衆ロ難τιáo~ 提交于 2019-12-03 12:39:01

The IKImageKit programming topics outline a way to do this like so (paraphrased):

   NSData *data = [pasteboard dataForType:NSFilenamesPboardType];
   NSArray *filenames = [NSPropertyListSerialization
        propertyListFromData:data
            mutabilityOption:kCFPropertyListImmutable
                      format:nil
            errorDescription:&errorDescription];

See here: Image Kit Programming Guide: Supporting Drag and Drop

Getting multiple filenames is easy: (While getting multiple URLs is not with 10.5)

  1. Register your view for NSFilenamesPboardType
  2. In performDragOperation: do the following to get an array of file paths:

NSPasteboard* pboard = [sender draggingPasteboard];
NSArray* filenames = [pboard propertyListForType:NSFilenamesPboardType];

The NSURLPboardType just handles one URL.

To get a list of files you need to create a NSArray from a NSFilenamesPboardType.

Apple's docs on drag and drop are pretty good, even if it's older stuff.

How do I handle [multiple items on a pasteboard] on 10.5?

Try the Pasteboard Manager.

The tricky part is that you're handling a drop, which means you're receiving an NSPasteboard already created for you, and there's no way to convert between NSPasteboard objects and PasteboardRefs. You'll have to ask the NSPasteboard for its name, then pass the same name to PasteboardCreate, and that may not work.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!