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
https://ringsbell.blog.fc2.com/tb.php/1333-592dd1e8