내 Mac OS 응용 프로그램에서이 NSImageView에서 mouseDown 이벤트 (사용자에 의해 트리거 된)가 발생한 후 NSView 내부를 NSImageView로 이동할 수있는 기능이 필요합니다. 사용자가 마우스 Up 이벤트를 트리거하면이보기는 마지막 mouseDrag 이벤트 방향으로 이동하여 거기에 머물러 야합니다. 이동 중에 NSImageView를 화면에 표시하려면 마우스 커서와 함께 이동해야합니다.코코아에서 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위한 목적 C. 코드에 코드를 포함 구식이다. GitHub 및 다른 StackOverflow 스레드에서 솔루션을 검색하려고했지만 작동중인 솔루션을 찾지 못했습니다.
이 질문에 대한 답변을 듣고 기꺼이 들려주십시오. 내가 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")
}
}
: 나는이 코드 NSImageView의 서브 클래스는 사용자 정의 MovableImageView을 만든 스위프트 3.
을 사용하고 있습니다. Interface Builder에서이 NSImageView에 대한 제약 조건을 설정했습니다.
NSView 내에서 NSImageView를 움직이는 방법을 알아 내려고하고 있습니다. (Swift 3, XCode 8)
을 당신은 잘못 생물을 서브 클래스된다. 대신 NSView를 서브 클래스하십시오. –
@ElTomato 아니요, NSImageVIew는 NSView의 하위 클래스 인 NSControl의 하위 클래스입니다. 그러니 괜찮을거야. – brianLikeApple