Mac OS X 10.5 の Finder から複数のファイルのドラッグ アンド ドロップを処理するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1998158

質問

Finder からアプリケーションにドラッグ/ドロップされたすべてのファイルの URL を取得する必要があります。

10.6 で実行されている Cocoa アプリは、ペーストボード上の複数の項目を処理する新しい 10.6 NSPasteboard API を使用してこれを実行します。このアプリを 10.5 にバックポートしようとしています。10.5 ではこれをどのように処理すればよいですか?

以下のようなことを実行すると、最初の URL のみが取得されます。

    NSArray *pasteTypes = [NSArray arrayWithObjects: NSURLPboardType, nil];
    NSString *bestType = [pboard availableTypeFromArray:pasteTypes]; 
    if (bestType != nil) {
        NSURL *url = [NSURL URLFromPasteboard:pboard];
    }        
役に立ちましたか?

解決

IKImageKit programming topics これを行う方法の概要を次のように示します (言い換え):

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

ここを参照してください: イメージ キット プログラミング ガイド:ドラッグアンドドロップのサポート

他のヒント

複数のファイル名を取得するのは簡単です。(もらいながら 複数の URL は使用できません 10.5)

  1. ビューを登録するNSFilenamesPboardType
  2. performDragOperation: ファイル パスの配列を取得するには、次の操作を実行します。

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

NSURLPboardTypeはただ1つのURLを処理します。

あなたはNSFilenamesPboardTypeからNSArrayのを作成するために必要なファイルのリストを取得します。

Appleのドキュメントドラッグ&ドロップするにそれは古いものだとしても、かなり良いです。

  

私は10.5で、[ペーストボード上の複数の項目]を扱う方法を教えてください。

ペーストボードマネージャーを試してみてください。

トリッキーな部分は、あなたがNSPasteboardがすでに作成受けていることを意味し、ドロップし、ハンドリングしているということです、そしてNSPasteboardはオブジェクトとPasteboardRefs間の変換に方法はありません。あなたは、そのnameためNSPasteboardを尋ね、その後PasteboardCreateに同じ名前を渡すと、それが動作しない場合がありますする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top