私のMac OSアプリケーションでは、このNSImageViewで(ユーザによってトリガされた)mouseDownイベントが発生した後、NSView内でNSImageViewを移動できる機能が必要です。ユーザーがマウスUpイベントをトリガーすると、このビューは最後のmouseDragイベント方向に移動し、そこにとどまる必要があります。移動中に、NSImageViewを画面上に表示したい(マウスカーソルと共に移動する必要があります)。CocoaでNSViewの内部でNSImageViewを動かすには?
私はアップルによって処理マウスイベントガイドを読んで、https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/EventOverview/HandlingMouseEvents/HandlingMouseEvents.html はまた、私は、このサンプルコードをダウンロードした:https://developer.apple.com/library/content/samplecode/DragItemAround/Introduction/Intro.html
両方のリンクがDragItemAroundのためのObjective Cのコード内のコードが含まれては時代遅れです。私は、GitHubやその他のStackOverflowスレッドでソリューションを検索しようとしましたが、実際のソリューションは見つかりませんでした。
この質問の回答を聞いてうれしいです。私はNSImageViewにこのクラスを設定したInterface Builderでその後
import Cocoa
class MovableImageView: NSImageView {
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
// Drawing code here.
// setup the starting location of the
// draggable item
}
override func mouseDown(with event: NSEvent) {
Swift.print("mouseDown")
//let window = self.window!
//let startingPoint = event.locationInWindow
}
override func mouseDragged(with event: NSEvent) {
Swift.print("mouseDragged")
self.backgroundColor = NSColor.black
}
override func mouseUp(with event: NSEvent) {
Swift.print("mouseUp")
}
}
:私は、私はこのコードでNSImageViewのサブクラスであるカスタムMovableImageViewを作成しましたスウィフト3.
を使用しています。また、このNSImageViewのためにInterface Builderで制約を設定しました。
NSView内でNSImageViewを移動する方法を理解しようとしていますか? (Swift 3、XCode 8)
をあなたは間違っているクリーチャーをサブクラス化しています。代わりにNSViewをサブクラス化してください。 –
@ElTomatoいいえ、NSImageVIewはNSViewのサブクラスでNSControlのサブクラスです。だからこれはうまくいくはずです。 – brianLikeApple