頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


macOSでFinderなどからviewにドラッグ&ドロップする

macOSでのドラッグ&ドロップを実装してみた。
まずFinderやデスクトップからmacOSアプリへのドラッグ&ドロップの場合。



↑こんな感じでアプリ外からアプリ内のNSViewオブジェクト領域へドラッグ&ドロップするという動作。


Drag and Drop Tutorial for macOS | raywenderlich.com
↑参考にしたのはこちら。
ただ現在のSwift 5.1.3だと動かなかったこともあり、自分が理解できるように書き換えた。


いくつかのサンプルコードを見たがドロップするところのviewはNSViewのサブクラスとしてクラスのファイルを作成している。そこに
registerForDraggedTypes([.fileURL])
と記述しておくとドロップを受け付けてくれる。

optional func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation
override func prepareForDragOperation(_ sender: NSDraggingInfo) -> Bool
override func performDragOperation(_ draggingInfo: NSDraggingInfo) -> Bool
↑といったメソッドでどんなファイルがドラッグされてドロップしようとしてるのか、ドロップされたタイミングなどを取得できる。


YamaguchiTatsuya/DragAndDrop_OtherToView: masOS sample code to drag and drop files from other app to NSView object
↑GitHubに置いたサンプルコードはこちら。
マウスがドロップできるview上に来ると枠が表示される、といった機能は省いている。



macOS Catalina 10.15.2
Swift 5.1.3
Xcode 11.3.1



関連記事
macOSでFinderなどからviewにドラッグ&ドロップする(当記事)
macOSの同一アプリ内で画像などをドラッグ&ドロップする
macOSで同一アプリ内でtableからviewへドラッグ&ドロップする
macOSでFinderなどからtableにドラッグ&ドロップする

参考記事
Using Drag and Drop with NSTableView — Nate Thompson
Drag and Drop Tutorial for macOS | raywenderlich.com
スポンサーサイト




<< macOSの同一アプリ内で画像などをドラッグ&ドロップする  TopPage  macOSでバインドを使いテーブルを表示する >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1332-43061519




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.