【发布时间】:2020-05-02 12:30:10
【问题描述】:
我有一个基于视图的 NSOutlineView(用 Objective C 编写),它支持从树中的任何行拖动。不允许用户多行选择。我调整了 outlineView:acceptDrop:item:childIndex 委托方法中删除的内容,以自动包含所有必要的父行和子行。实际拖动操作正常。
我的问题是被拖动的视觉组件。在进行选择时,我可以使用 outlineView:selectionIndexesForProposedSelection 来修改选择。 (我的视觉选择风格是 NSTableViewSelectionHighlightStyleNone)。这也可以找到,因为所需的组件在拖动中直观地表示。
问题是用户不必选择一行来开始拖动。当以这种方式开始拖动时,不会调用 outlineView:selectionIndexesForProposedSelection,并且在拖动过程中只显示被拖动的行。实际的拖动操作仍然按预期工作。
我已经使用了所有数据源和委托方法,但我似乎无法找到一种方法来更改最初拖动的内容,以便 NSOutlineView 将显示我包含的行的图像。
似乎 outlineView:updateDraggingItemsForDrag 应该可以工作,但它不允许我更改拖动源。
似乎 NSOutlineView 决定在拖动过程中突出显示的内容是基于选择的。无论我在粘贴板上放置了多少项目,它始终是突出显示的选定项目。
关于如何在拖动开始时强制更改选择的任何想法?
【问题讨论】:
标签: macos drag-and-drop selection nsoutlineview