LoginSignup
13
13

More than 5 years have passed since last update.

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

Posted at

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にそのファイルパスが格納されています。
(複数のファイルがドラッグされてくることも考えられるので、配列になっています

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13