2007/02/13

ドラッグアンドドロップの実装

Cocoaアプリケーションにドラッグアンドドロップを実装するのは比較的簡単だ。

今回はドラッグ対象をファイル名とし、そのコピー操作をドラッグアンドドロップで受け付けることにする。

ドラッグアンドドロップ操作を受け付けるには最低2つのメソッドを実装する必要がある。1つ目は、-(NSDragOperation)draggingEntered:(id )sender、もう1つは-(BOOL)performDragOperation:(id )senderだ。

draggingEnteredはウィンドウやビューにドラッグされたオブジェクトが重なった時に呼び出され、それを受け付けるかどうか応答するメソッドだ。ドラッグされてきたオブジェクトが何なのかは、NSPasteboard型のペーストボードから取得できる。このメソッドで、NSDragOperationCopyを返せばコピー操作を受け付けることになり、ドラッグされてきたオブジェクトの画像の+サインがつく。

ドラッグアンドドロップでオブジェクトが離された時にドラッグアンドドロップの操作が実行されるが、それを司るのがperformDragOperationメソッドだ。こちらもペーストボードを参照し、ドラッグされたもの、その操作に応じた処理を行う。処理に応じてYES/NOのBOOL値を返す。

ということで、この2つを実装し、ドラッグされて来たものが離された時にファイル名をログに出力するところまで実装した。

0 件のコメント: