我有一个我已经子类化的集合视图,允许我通过拖放重新排序集合视图项。我设置pasterboard的拖拽代码目前是mouseDragged:
- (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:并检查拖动开始位置与鼠标当前位置之间的距离?
答案 0 :(得分:2)
在mouseDown:
中,记住鼠标停在哪里(locationInWindow
)。在mouseDragged:
中,从鼠标拖动事件的位置减去鼠标按下事件的位置,并将差异与HIMouseTrackingGetParameters
与kMouseParamsDragInitiation
选择器返回的大小进行比较。< / p>