Mac
OSX
Swift

【OSX】【swift】Drag & Dropを受け付ける(ファイルパスを取得)

More than 3 years have passed since last update.

NSViewを継承したクラスを作ったとして、

class AcceptDragView: NSView {

required init?(coder: NSCoder) {
super.init(coder: coder)
self.registerForDraggedTypes([NSFilenamesPboardType]);
}

ドラッグの受け付けるタイプを指定する。


override func draggingEntered(sender:NSDraggingInfo)->NSDragOperation{
return NSDragOperation.Generic;
// return NSDragOperation.Copy; //マウスポインタがかわる(+の緑アイコンがつく)
// return NSDragOperation.Link;
}

ドラッグされてきた場合の動きを調整。

returnに合わせて、マウスポインタの見せ方を変えることが可能


override func performDragOperation(sender:NSDraggingInfo)->Bool{
var pboard:NSPasteboard! = sender.draggingPasteboard()
if pboard != nil {
pboard = sender.draggingPasteboard()
if contains(pboard.types as [NSString],NSFilenamesPboardType) {
var files:[String] = pboard.propertyListForType(NSFilenamesPboardType) as [String]
println(files)
}
return true
}
return false
}

filesにそのファイルパスが格納されています。

(複数のファイルがドラッグされてくることも考えられるので、配列になっています