cocoa - NSBrowser 填充 NSPasteboard 但不会掉落

标签 cocoa drag-and-drop nspasteboard nsbrowser

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

这会调用 - (BOOL)浏览器: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: Yes)是:

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 时,没有任何内容掉落。我没有看到目标文档的亮点。 (注:我也有一个拖动图像例程,并且我看到了拖动图像)

有什么想法为什么我似乎正在填充粘贴板但它拒绝放入其他应用程序中吗?

最佳答案

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

[_browser setDraggingSourceOperationMask:NSDragOperationAll forLocal:NO];

在 awakeFromNib 中实现了几乎部分代码,并且它适用于 TextEdit、Safari 和 Word。 这是示例 code

关于cocoa - NSBrowser 填充 NSPasteboard 但不会掉落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11978288/

相关文章:

cocoa - 在 Cocoa 中,将私有(private) API 放在 .m 文件中,将公共(public) API 放在 .h 文件中,这是一个好习惯吗?

objective-c - 如何确保 Cocoa 中的窗口只显示一次?

cocoa - NSTextField 和 NSTextView : Overlapping Delegate Methods

java - 从 JTable 拖放到 JLayeredPane

xcode - 奇怪的 NSOutlineView 崩溃

Javascript 轮盘赌 table ,拖放

javascript - 将列表项拖到新的相对位置并保存到数据库

excel - 将数据写入 NSPasteboard 并粘贴到按列和行拆分的 Excel 中

html - 将 HTML 数据写入 NSPasteboard

cocoa - 复制热键上的当前选择