NSCollectionView:接受仅在项之间拖动,而不是结束

时间:2015-08-31 15:01:53

标签: objective-c macos cocoa drag-and-drop nscollectionview

我已经实施了NSCollectionView并且工作正常。但是,什么时候 拖动物品重新安排它们,我只想接受拖拽 对象之间。

目前的行为是你可以在对象之间拖动(它会打开一个 空间)但 over 一个对象。我希望下面的图片说得更好。 例如,将项目拖到#2上会将其放在#2之前。我喜欢 禁用此功能并仅接受介于两者之间的拖动。

在下图中:

  1. 原始状态
  2. 项目#0在#1和#2
  3. 之间拖动
  4. 项目#0将拖过#2(结果相同)
  5. drag and drop

1 个答案:

答案 0 :(得分:3)

因此,经过一些研究,我发现validadeDrop方法已经有了 一个参数,如果操作结束或进入,则准确描述该参数 之间。因为它是作为参考,人们可以改变 用于覆盖某种行为的参数。所以,解决方案是添加 检查方法:

- (NSDragOperation)
    collectionView:(NSCollectionView *)collectionView
      validateDrop:(id<NSDraggingInfo>)draggingInfo
     proposedIndex:(NSInteger *)proposedDropIndex
     dropOperation:(NSCollectionViewDropOperation *)proposedDropOperation
{
    /* ... */

    if (*proposedDropOperation == NSCollectionViewDropOn)
        *proposedDropOperation =  NSCollectionViewDropBefore;

    /* ... */
}