我有一个 NSCollectionView
实现并且工作正常。然而,当
拖动项目以重新排列它们,我只想接受拖动
对象之间。
当前的行为是您可以在对象之间拖动(它会打开一个 空间)而且在一个物体上。我希望下面的图片能说明问题。 例如,将一个项目拖到 #2 上,会将它放在 #2 之前。我想要 禁用它并只接受两者之间的拖动。
在下面的图片中:
- 原始状态
- 项目 #0 拖到 #1 和 #2 之间
- 项目 #0 拖越过 #2(结果相同)
最佳答案
所以,经过更多的研究,我发现 validadeDrop
方法有
一个准确描述的参数,如果操作结束或在
之间。由于它是作为引用给出的,因此可以更改
覆盖特定行为的参数。所以,解决方案是添加
此检查方法:
- (NSDragOperation)
collectionView:(NSCollectionView *)collectionView
validateDrop:(id<NSDraggingInfo>)draggingInfo
proposedIndex:(NSInteger *)proposedDropIndex
dropOperation:(NSCollectionViewDropOperation *)proposedDropOperation
{
/* ... */
if (*proposedDropOperation == NSCollectionViewDropOn)
*proposedDropOperation = NSCollectionViewDropBefore;
/* ... */
}
关于objective-c - NSCollectionView:只接受项目之间的拖动,而不是超过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32314283/