0
我有一个集合视图,我已将其分类为允许通过拖放重新排列集合视图项目的顺序。即树立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在哪里发挥作用。我只是使用c距离函数来计算距离并进行比较。 – Austin 2009-09-25 20:17:11
该功能为您提供正确的最小距离来启动拖动。如果用户没有移动这个距离,他们只是按住鼠标按钮。 – 2009-09-25 21:45:13