2011-10-03 53 views
0

我想实现从NSOutlineView拖动,虽然拖动开始OK它永远不会被另一个应用程序接受。相关的代码是:从NSOutlineView拖动永不接受

- (BOOL) outlineView:(NSOutlineView*)pOutlineView writeItems:(NSArray*)pItems toPasteboard:(NSPasteboard*)pBoard 
{ 
    CItem* theItem = [pItems objectAtIndex:0]; 
    BOOL canDrag = ([theItem subItems] == 0); 
    if (canDrag) { 
     [pBoard clearContents]; 
     [pBoard writeObjects:[NSArray arrayWithObject:[theItem name]]]; 
    } 

    return canDrag; 
} 

[theItem name]返回一个NSString *。在某些时候,我会希望将更多内容添加到粘贴板内容中,但是直到我可以使用简单的字符串工作时,似乎没有太多意义。

拖动看起来不错,但接收器在悬停时不显示任何突出显示,并且释放时拖动图像“飞回”。

任何帮助感激地收到!

牧师安迪

回答

1

原来,draggingSourceOperationMaskForLocal:绝不会为NSOutlineView(或NSTableView的可能)的委托,使拖动操作是绝不允许。子类化NSOutlineView只是为了覆盖这个方法修复了一切。