Mac OS X 10.5 の Finder から複数のファイルのドラッグ アンド ドロップを処理するにはどうすればよいですか?
-
22-09-2019 - |
質問
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)
- ビューを登録する
NSFilenamesPboardType
- で
performDragOperation:
ファイル パスの配列を取得するには、次の操作を実行します。
NSPasteboard* pboard = [sender draggingPasteboard];
NSArray* filenames = [pboard propertyListForType:NSFilenamesPboardType];
NSURLPboardTypeはただ1つのURLを処理します。
あなたはNSFilenamesPboardTypeからNSArrayのを作成するために必要なファイルのリストを取得します。
Appleのドキュメントドラッグ&ドロップするにそれは古いものだとしても、かなり良いです。
私は10.5で、[ペーストボード上の複数の項目]を扱う方法を教えてください。
ペーストボードマネージャーを試してみてください。
トリッキーな部分は、あなたがNSPasteboardがすでに作成受けていることを意味し、ドロップし、ハンドリングしているということです、そしてNSPasteboardはオブジェクトとPasteboardRef
s間の変換に方法はありません。あなたは、そのname
ためNSPasteboardを尋ね、その後PasteboardCreate
に同じ名前を渡すと、それが動作しない場合がありますする必要があります。