頭と尻尾はくれてやる!

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


macOSの同一アプリ内で画像などをドラッグ&ドロップする



↑このようにNSViewオブジェクトに乗っている別なNSViewオブジェクト(ここでは画像)をマウスで動かしたい。

元々iOSで似たようなことをやってるコードがあったのでmacOS用に移植した。
{
let panGestureRecognizer = NSPanGestureRecognizer(target: self,
action: #selector(self.drawView(recognizer:)))

imageView.addGestureRecognizer(panGestureRecognizer)
}
↑ジェスチャーを設定。

    @objc private func drawView(recognizer: NSPanGestureRecognizer) {

guard let targetView = recognizer.view else {
assertionFailure("targetView is nil")
return
}

let distance = recognizer.translation(in: targetView)

let newCenter = CGPoint(x: targetView.center.x + distance.x,
y: targetView.center.y + distance.y)

targetView.center = newCenter

recognizer.setTranslation(CGPoint(x: 0, y: 0), in: targetView)
}
↑そのジェスチャーを拾う部分。
ほとんどiOSと同じなんだけど、他にmacOSならではのやり方があるのかも?


YamaguchiTatsuya/DragAndDrop_InView: masOS sample code to drag and drop an image in NSView object
↑GitHubに置いたサンプルコードはこちら。



macOS 10.15.2 Catalina
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で同一アプリ内でtableからviewへドラッグ&ドロップする  TopPage  macOSでFinderなどからviewにドラッグ&ドロップする >>

コメント


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

トラックバック

トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1333-592dd1e8




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