나는 끌어서 놓기를 통해 컬렉션보기 항목을 다시 정렬 할 수 있도록 서브 클래 싱 한 컬렉션 뷰를 가지고 있습니다. pasterboard을 설정 내 드래그 코드의 mouseDragged 현재 :사용자가 실수로 Cocoa에서 드래그를 시작하는 것을 방지하려면 어떻게해야합니까?
- (void)mouseDragged:(NSEvent *)aEvent {
if(!dragInProgress) {
dragInProgress = YES;
NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];
... setup pboard, declare types, setData ...
... create drag image ....
[self dragImage: image
at: position
offset: NSZeroSize
event: aEvent
pasteboard: pboard
source: self
slideBack: YES];
}
}
나는 사용자가 특정 기간 동안 끌고 경우에만 드래그를 시작하고 싶은, 그래서 그들은 실수로 드래그를 시작하지 마십시오. Cocoa에서이 작업을 수행 할 수있는 설정이 있습니까? 아니면이 코드를 mouseMoved로 이동해야합니까? 그리고 드래그 시작 위치와 현재 마우스 위치 사이의 거리를 확인하십시오.
mouseDown에 locationInWindow를 기록하고이를 mouseDragged에있는 locationInWindow와 비교하면 해결됩니다. HIMouseTrackingGetParameters와 kMouseParamsDragInitiation이 어디에서 작동하는지 알지 못했습니다. 방금 거리 함수를 사용하여 거리를 계산하고 비교했습니다. – Austin
그 기능은 끌기를 시작하기위한 정확한 최소 거리를 제공합니다. 사용자가 해당 거리를 이동하지 않았다면 마우스 버튼을 누른 채로 있습니다. –