首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么-[NSPasteboard readObjectsForClasses:options:]从拖动中只返回一个项?

为什么-[NSPasteboard readObjectsForClasses:options:]从拖动中只返回一个项?
EN

Stack Overflow用户
提问于 2015-01-22 21:52:36
回答 1查看 949关注 0票数 0

我正在为NSPasteboard编写许多对象,以便使用beginDraggingSessionWithItems:event:source:进行拖动操作

代码语言:javascript
复制
NSMutableArray *draggingItems = [NSMutableArray array];
for (NSUInteger i = 0; i < numItems; i++) {
    NSPasteboardItem *pasteboardItem = [NSPasteboardItem new];

    [pasteboardItem setDataProvider:[MyItem itemForIndex:i]
                           forTypes:@[@"com.test.FooType"]];

    NSDraggingItem *draggingItem = [[NSDraggingItem alloc] initWithPasteboardWriter:pasteboardItem];
    // ...
    [draggingItems addObject:draggingItem];
}

[sourceView beginDraggingSessionWithItems:draggingItems
                                    event:theEvent
                                   source:self];

在拖放目的地(在同一个应用程序中),我尝试使用readObjectsForClasses:options:接收这些项目,但我只接收其中一个。

代码语言:javascript
复制
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender
{
    // sender.draggingPasteboard.pasteboardItems contains all items

    NSArray *myItems = [sender.draggingPasteboard readObjectsForClasses:@[[MyItem class]] options:nil];
    // pasteboard:item:provideDataForType: is called for each object on the pasteboard...
    // ...but this method only returns 1 object (the first one)??

(请注意,如果您为类传递@[[NSPasteboardItem class]],则所有项都将不受修改地返回。)

知道为什么会发生这种情况吗?这里有样例项目 (有大量的NSLogs来查看项目实际上是写到黑板上的)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-22 22:37:19

结果表明,-pasteboard:item:provideDataForType:的实现需要在项目上设置数据,而不是在桌面上--后者覆盖以前为其他项编写的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28099359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档