2010-12-05 22 views
7

J'essaie de créer une région glisser-déposer qui accepte n'importe quel type de fichier et le télécharger sur un serveur (en utilisant ASIHTTPRequest). Je regardais l'exemple suivant qu'Apple fournit:Cocoa: Faites glisser et déposez n'importe quel type de fichier

http://developer.apple.com/library/mac/#samplecode/CocoaDragAndDrop/Introduction/Intro.html

mais il ne couvre que traitant de la glisser-déposer des images. Comment puis-je configurer mes opérations de glisser-déposer pour gérer tout type de fichier?

Merci.

Répondre

5

A en juger par ce post, vous auriez probablement juste besoin d'avoir votre vue s'inscrire pour NSFilenamesPboardType au lieu du imagePastBoardTypes pour recevoir des types de fichiers arbitraires.

11

Type de lié, mais en ajoutant ceci au cas où il est utile pour quelqu'un:

Si vous voulez simplement gérer un fichier glissé sur l'icône de l'application (n'a pas besoin d'être une application basée sur les documents):

En .h:

- (void)application:(NSApplication *)sender openFiles:(NSArray *) fileNames; 

En .m:

- (void)application:(NSApplication *)sender openFiles:(NSArray *) fileNames { 
    NSLog(@"Files dragged on: %@", fileNames); 
} 

Dans votre xxx.pli st, créez une nouvelle entrée sous CFBundleDocumentTypes:

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeExtensions</key> 
     <array> 
      <string>*</string> 
     </array> 
     <key>CFBundleTypeName</key> 
     <string>NSFilenamesPboardType</string> 
     <key>CFBundleTypeRole</key> 
     <string>None</string> 
    </dict> 
</array>