How can I drop a file(or select to open it in Finder) of a type specified in the Info.plist onto my dock icon and then calling a method with the full path of the file?
相关问题
- What is the best way to do a search in a large fil
- Spring Integration - Inbound file endpoint. How to
- php--glob for searching directories and .jpg only
- NSOutlineView drag line stuck + blue border
- Editing how file name is displayed in JComboBox wh
相关文章
- What is the correct way to declare and use a FILE
- Making new files automatically executable?
- Converting (u)int64_t to NSNumbers
- “getter” keyword in @property declaration in Objec
- How to serialize data into indented json [duplicat
- NSMenuItem KeyEquivalent “ ”(space) bug
- Creating a custom file like object python suggesti
- firefox ondrop event.dataTransfer is null after up
If you've set up your Info.plist's CFBundleDocumentTypes array properly (either 'LSItemContentTypes' or 'CFBundleTypeExtensions'), then you just need to set up an NSApplication delegate and implement the delegate method, application:openFile:.
If you're expecting multiple files to be dropped at once, implement application:openFiles:.
For promised files (
NSFilesPromisePboardType
/kPasteboardTypeFileURLPromise
) see Dropping promised files on to application icon in Dock.Select your application in the target group of the side pane and use get info. Then in the new window select the properties tab to add a new document type. Name it "Folder" for convenience and the OS Types needs to be "fold"; the store type and role you can leave as is.
On current systems you can use a UTI instead of the old-style four-char types (such as
fold
above). In Xcode's document type editor, make a new type with:public.folder
is a subtype ofpublic.directory
.public.folder
matches directories that appear as such to the user, i.e. not packages like.app
wrappers.If you're actually making a document-based app, setting it up to give you the path will have you doing far more work than you need to. Simply use the document-based application template. The document controller will create an instance of the right class for you; you need only write that class.
An application you create this way will handle file drops (by opening them as documents) for free.
Here's an updated solution for Xcode 5. In AppDelegate.m
And in Xcode setup Document Types under Project > Targets > Info:
Check settings in Info.plist in case you have an empty 'Document Content Type UTIs' array which should be filled out properly or else deleted.
Your Info.plist should look something like this: