2

我有一个 NSCollectionView,我想接受从我的应用程序的其他地方拖动的项目。

我在 collectionview 的委托中实现collectionView:validateDrop:proposedIndex:dropOperation:collectionView:acceptDrop:index:dropOperation:注册适当的拖动类型。当我拖动适当的类型时,这两种方法都可以正常调用,但是我没有在 collectionview 上得到一个蓝色的焦点环,表示有效的拖动。

已经尝试过集合视图及其包含焦点环的默认和外部设置的滚动视图。两者都只是标准的非派生 Cocoa 类。想知道是否还有什么我应该尝试的。当然没有必要为此子类化 NSCollectionView 吗?

谢谢克里斯
_

4

1 回答 1

3

焦点环通常不是提供有关拖动目的地的反馈的正确方法。每个视图都略有不同。NSTextView 显示插入栏。NSTableView 在行之间显示一条蓝线用于Before放置操作,并在行周围显示一个用于放置操作的边框On。(见NSTableViewDropOperation

NSCollectionView 显示现有子视图之间的“间隙”,以显示项目将被丢弃以进行Before丢弃操作,并且它将selectedNSCollectionViewItem 上的属性设置为YES用于On丢弃操作。(注意:默认情况下,NSCollectionViewItem 不做任何事情来显示selected属性。您必须自己实现。)

由于 NSCollectionView 的反馈仅使用现有的子视图,因此对于空的 NSCollectionView 似乎根本没有任何反馈。您需要子类化以自己提供此行为。您还可以提交一个错误以请求 NSCollectionView 自己执行此操作。

于 2010-11-16T22:39:39.127 回答