NSBrowser填充NSPasteboard但不会下降

时间:2012-08-15 22:32:23

标签: cocoa drag-and-drop nspasteboard nsbrowser

我有一个NSBroswer,其中包含一系列查找文本blob的条目。如果blob存在则 - (BOOL)browser:canDragRowsWithIndexes:inColumn:withEvent:返回YES。

这会调用 - (BOOL)browser:writeRowsWithIndexes:inColumn:toPasteboard:

在这里,我执行以下操作:

NSUInteger changeCount;
BOOL retBOOL = YES;

changeCount = [pasteboard clearContents];
changeCount = [pasteboard declareTypes:@[NSPasteboardTypeString, NSPasteboardTypeHTML]
                                 owner:self];
didSet = [pasteboard setString:self.currentHTMLCode
                       forType:NSPasteboardTypeString];
retBOOL = retBOOL & didSet;
didSet = [pasteboard setString:[NSString stringWithFormat:@"<pre>%@</pre>", self.currentHTMLCode]
                       forType:NSPasteboardTypeHTML];
retBOOL = retBOOL & didSet;

现在出来的粘贴板的数据分析(使用retBOOL:是)是:

pasteboard: : <NSPasteboard: 0x101931870>
     name: : Apple CFPasteboard drag
     change count: : 77
     types: : (
    "public.utf8-plain-text",
    NSStringPboardType,
    "public.html",
    "Apple HTML pasteboard type"
)
     items: : (
    "<NSPasteboardItem: 0x1005a5cb0>"
)
         PBItem: : <NSPasteboardItem: 0x1005a5cb0>
             PBType: : public.utf8-plain-text
                 String for type [public.utf8-plain-text] = 89958 characters
             PBType: : public.html
                 String for type [public.html] = 89969 characters
retValue: YES

所以我的问题是,当我将它拖到SimpleText或BBEdit时,没有任何东西掉落。我没有看到目标文件的重点。 (注意:我也有一个拖动图像例程,我看到拖动图像)

任何想法为什么我似乎填充了粘贴板,但它拒绝放入其他应用程序?

1 个答案:

答案 0 :(得分:3)

我下载了Apple的示例项目SimpleBrowser,添加了

[_browser setDraggingSourceOperationMask:NSDragOperationAll forLocal:NO];

在awakeFromNib中并实现了几乎部分代码,它适用于TextEdit,Safari&amp;字。 这是样本code