我有一个显示项目列表的NSOutlineView,我想实现一种文件夹结构。文件夹可以包含任意数量的项目。

当用户创建一个空白文件夹时,我想创建一个小放置区域以使如何在文件夹中获取项目变得更加明显。放置区域是文件夹的子项。与此类似:

objective-c - NSOutlineView放到子行上不起作用-LMLPHP

问题是,当用户将项目拖到其上时,我只是无法使NSOutlineView突出显示放置区域。

这是我到目前为止的内容:

- (NSDragOperation)outlineView:(NSOutlineView *)outlineView
                  validateDrop:(id <NSDraggingInfo>)info
                  proposedItem:(id)item
            proposedChildIndex:(NSInteger)index
{
    // Drag within the outlineview
    if ([info draggingSource] == outlineView)
    {
        if (self.itemBeingDragged)
        {

            if ([item isKindOfClass:[MyFolder class]] ||
                [item isKindOfClass:[MyDropArea class]])
            {
                return NSDragOperationMove;
            }
            ... other statements (irrelevant here) ...
        }
    }
}


这还不够吗?
我确实收到了令人反感的反馈。这是放置区域上方或下方的蓝线,但这对我没有帮助。

有任何想法吗?

最佳答案

Apple的DragAndDropOutlineView示例项目应使您对导致问题的原因有所了解:

objective-c - NSOutlineView放到子行上不起作用-LMLPHP

请注意,两个复选框使您可以准确地切换此行为。查看源代码,看看是否可以弄清楚他们在做什么,而实际上却不是。我快速浏览了一下,但是在没有更多代码知识的情况下,我无法给出答案(所以我并没有真正将其发布为答案,更多的是带有图片的评论!)。

关于objective-c - NSOutlineView放到子行上不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35315571/

10-13 09:43