NSOutlineView 中的拖放方法没有被调用

问题描述 投票:0回答:1

我正在尝试在我的 MacOS 应用程序中启用 NSOutlineView 的拖放功能。我想将子项从一个文件夹拖到大纲视图中的另一个文件夹。

I want test asset 1 to be dragged and dropped in Group 2

我有 myOutlineView 和一个控制器,它是数据源和我的大纲视图的委托。

在我的大纲视图控制器中,我有以下三种方法:

-(BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard

-(NSDragOperation)outlineView:(NSOutlineView *)outlineView validateDrop:(id < NSDraggingInfo >)info proposedItem:(id)item proposedChildIndex:(NSInteger)index

-(BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id < NSDraggingInfo >)info item:(id)item childIndex:(NSInteger)index

他们都没有被呼叫。我的笔尖设置正确,我的大纲视图已填充,并且除拖放功能外的所有功能都正常工作。

我还注册了从笔尖唤醒的拖动类型:

[_paraOutlineView registerForDraggedTypes:[NSArray arrayWithObject:@"QStyleSheetModel"]];

我也写过这个:

[_paraOutlineView setDraggingSourceOperationMask:NSDragOperationMove forLocal:YES];

可能是什么原因?

objective-c cocoa drag-and-drop nsoutlineview
1个回答
0
投票

我已经成功解决问题了!尽管我最初无法查明确切的问题,但事实证明,我的代码中重写的函数“setDataSource”正在调用属于不同接口的“init”函数。对“init”函数的意外调用阻止了“writeItems:toPasteBoard”的执行。解决方案是删除对“init”函数的调用,现在一切都按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.