1

NSCollectionViewItem を Finder にドラッグすると、ファイルを Finder にコピーする関数を開発しているので、次のデリゲートを実装します。

- (BOOL)collectionView:(NSCollectionView *)cv writeItemsAtIndexes:(NSIndexSet *)indexes toPasteboard:(NSPasteboard *)pasteboard
{

    NSMutableArray *urls = [NSMutableArray array];
    [indexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop)
     {
         NSDictionary *dictionary = [[cv content] objectAtIndex:idx];
         [urls addObject:[dictionary objectForKey:KEY_URL]];
     }];

    if ([urls count] > 0)
    {
        [pasteboard clearContents];
        BOOL result = [pasteboard writeObjects:urls];
        return result;
    }
    return NO;
}

またはこの方法:

- (BOOL)collectionView:(NSCollectionView *)cv writeItemsAtIndexes:(NSIndexSet *)indexes toPasteboard:(NSPasteboard *)pasteboard
{

    NSMutableArray *urls = [NSMutableArray array];
    [indexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop)
     {
         NSDictionary *dictionary = [[cv content] objectAtIndex:idx];
         [urls addObject:[[dictionary objectForKey:KEY_URL] path]];
     }];

    [pasteboard declareTypes:@[NSFilenamesPboardType] owner:self];
    [pasteboard setPropertyList:urls forType:NSFilenamesPboardType];

    return YES;
}

どちらも正常に動作します。

今、私は本当に他の機能のドラッグ先URLを取得したい. 誰でも私がそれを解決するのを手伝ってくれますか?

4

1 に答える 1

0

あなたが試すことができます:

-(BOOL)collectionView:(NSCollectionView *)cv writeItemsAtIndexes:(NSIndexSet *)Pasteboard へのインデックス:(NSPasteboard *)pasteboard {

NSMutableArray *urls = [NSMutableArray array];
[indexes enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop)
 {
     NSDictionary *dictionary = [[cv content] objectAtIndex:idx];
     [urls addObject:[[dictionary objectForKey:KEY_URL] path]];
 }];

[pasteboard clearContents];

return [pasteboard writeObjects:urls];

}

于 2013-05-28T09:47:45.040 に答える