代码之家  ›  专栏  ›  技术社区  ›  Chris Devereux

验证拖动到NSCollectionView的操作不会直观地反映出来

  •  1
  • Chris Devereux  · 技术社区  · 15 年前

    我有一个NSCollectionView,我想接受从应用程序中的其他位置拖动的项。

    我执行 collectionView:validateDrop:proposedIndex:dropOperation: collectionView:acceptDrop:index:dropOperation: 在collectionview的委托中,并注册适当的拖动类型。当我拖动适当的类型时,这两个方法都被调用得很好,但是collectionview上没有蓝色的焦点环指示有效的拖动。

    已尝试使用“收藏”视图及其包含的滚动视图来设置聚焦环的默认设置和外部设置。两者都只是标准的非派生可可类。不知道还有什么我应该试试的。当然没有必要为此子类NSCollectionView?

    谢谢
    克里斯

    1 回复  |  直到 15 年前
        1
  •  3
  •   kperryua    15 年前

    焦点环通常不是提供拖动目标反馈的正确方法。每一种观点都有点不同。NSTextView显示插入栏。NSTableView在 Before 拖放操作,并在行周围显示 On 放下武器。(见 NSTableViewDropOperation )

    NScRebug视图显示了现有子视图之间的“间隙”,以显示项目将被丢弃的位置。 以前 删除操作,它将设置 selected NSCollectionViewItem的属性 YES 对于 打开 放下武器。(注意:默认情况下,NSCollectionViewItem不做任何事情来可视化地表示 挑选出来的 财产。你必须自己实现这一点。)

    由于NScReaveScVIEW的反馈仅使用现有的子视图,所以对于空NSCOLSENDVIEW视图,似乎没有任何反馈。您需要自己的子类来提供这种行为。您还可以提交一个bug,请求NSCollectionView自己执行此操作。