在我的Mac OS應用程序中,我需要一個功能,以便在NSImageView中發生mouseDown事件(由用戶觸發)後能夠在NSView內移動NSImageView。當用戶觸發鼠標上移事件時,此視圖必須移至最後一個mouseDrag事件方向並停留在那裏。在移動過程中,我希望NSImageView在屏幕上可見(它應該隨鼠標光標一起移動)。如何將NSImageView移動到Cocoa中的NSView中?
我讀過由蘋果處理鼠標事件的引導,https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/EventOverview/HandlingMouseEvents/HandlingMouseEvents.html 還有我已經下載這個示例代碼:https://developer.apple.com/library/content/samplecode/DragItemAround/Introduction/Intro.html
兩個鏈接包含代碼的目的C.規範DragItemAround是過時的。我試圖在GitHub和其他StackOverflow線程上搜索解決方案,但還沒有找到任何工作解決方案。
很高興聽到這個問題的答案。我使用的是斯威夫特3.
我創建一個自定義MovableImageView是NSImageView與此代碼的子類:
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")
}
}
之後在Interface Builder中我已經設置該類NSImageView。我也爲這個NSImageView在Interface Builder中設置了約束。
現在我想弄清楚如何在NSView中移動NSImageView? (Swift 3,XCode 8)
你繼承了錯誤的生物。代替NSView的子類。 –
@ElTomato不,NSImageVIew是NSControl的子類,它是NSView的子類。所以這應該沒問題。 – brianLikeApple