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