macOSでFinderなどからviewにドラッグ&ドロップする
macOSでのドラッグ&ドロップを実装してみた。
まずFinderやデスクトップからmacOSアプリへのドラッグ&ドロップの場合。
↑こんな感じでアプリ外からアプリ内のNSViewオブジェクト領域へドラッグ&ドロップするという動作。
Drag and Drop Tutorial for macOS | raywenderlich.com
↑参考にしたのはこちら。
ただ現在のSwift 5.1.3だと動かなかったこともあり、自分が理解できるように書き換えた。
いくつかのサンプルコードを見たがドロップするところのviewはNSViewのサブクラスとしてクラスのファイルを作成している。そこに
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
まず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
https://ringsbell.blog.fc2.com/tb.php/1332-43061519