2

我有一个 NSArrayController 用于向 IKImageBrowserView 提供数据。我想支持从 IKImageBrowserView 拖放到其他应用程序。这是我的代码中的相关方法:

- (NSUInteger) imageBrowser:(IKImageBrowserView *) aBrowser writeItemsAtIndexes:(NSIndexSet *) itemIndexes toPasteboard:(NSPasteboard *)pasteboard{
    NSArray *items = [[resultsArrayController arrangedObjects] objectsAtIndexes:itemIndexes];
    if(![pasteboard writeObjects:items]){
        return 0;
    }
    return [items count];
}

我的应用程序是新的,所以我的目标是 10.6+,根据文档,“在 Mac OS X v10.6 及更高版本上,使用 writeObjects: 直接将 URL 写入粘贴板。”

我已经验证我尝试编写的对象确实是 NSURL 对象,所以我不确定该过程在哪里发生故障或如何进一步解决问题。提前感谢您的帮助。

4

3 回答 3

13

你清理粘贴板了吗?您需要这样做,从而成为粘贴板的所有者,然后才能将对象写入粘贴板。

于 2010-10-11T04:26:46.043 回答
1

您是否验证过您的pasteboard变量不为零?

于 2010-10-11T01:49:59.723 回答
-1

要发送到 -[NSPasteboard writeObjects:] 的对象是否应该是 NSPasteboadItems?您可以将它们的字符串值设置为 NSURL 的 absoluteString 并编写一个 NSPasteboadItems 数组。

于 2010-10-11T02:37:47.780 回答