提问人:Ishi 提问时间:10/9/2023 最后编辑:Ishi 更新时间:10/12/2023 访问量:62
未调用 NSOutlineView 中的拖放方法
The methods for Drag and Drop in NSOutlineView are not getting called
问:
我正在尝试在我的 MacOS 应用程序中启用 NSOutlineView 的拖放功能。我想在大纲视图中将一个子文件夹从一个文件夹拖到另一个文件夹。
我有 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
他们都没有被召唤。我的笔尖设置正确,我的大纲视图被填充,除了拖放功能外,所有功能都在工作。
我还在 nib 的唤醒中注册了拖动类型:
[_paraOutlineView registerForDraggedTypes:[NSArray arrayWithObject:@"QStyleSheetModel"]];
我还写了这个:
[_paraOutlineView setDraggingSourceOperationMask:NSDragOperationMove forLocal:YES];
可能是什么原因?
答:
0赞
Ishi
10/12/2023
#1
我已经成功解决了这个问题!虽然我最初无法确定确切的问题,但事实证明,我的代码中被覆盖的函数“setDataSource”正在调用属于不同接口的“init”函数。对“init”函数的意外调用阻止了“writeItems:toPasteBoard”的执行。解决方案是删除对“init”函数的调用,现在一切都按预期工作。
评论
setDraggingSourceOperationMask:forLocal:
?