Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 无法拖放到NSCollectionView上_Objective C_Cocoa_Drag And Drop_Nscollectionview - Fatal编程技术网

Objective c 无法拖放到NSCollectionView上

Objective c 无法拖放到NSCollectionView上,objective-c,cocoa,drag-and-drop,nscollectionview,Objective C,Cocoa,Drag And Drop,Nscollectionview,我可能犯了一个简单的错误,但我就是无法将文件拖放到NSCollectionView上,即使是以最基本的方式 在一个测试项目中,我在窗口上有一个NSCollectionView,视图控制器既是它的委托,也是它的数据源。我希望能够将文件从Finder拖到此集合视图 通过阅读文档,我所要做的就是: 为拖动的类型注册: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading

我可能犯了一个简单的错误,但我就是无法将文件拖放到NSCollectionView上,即使是以最基本的方式

在一个测试项目中,我在窗口上有一个NSCollectionView,视图控制器既是它的委托,也是它的数据源。我希望能够将文件从Finder拖到此集合视图

通过阅读文档,我所要做的就是:

为拖动的类型注册:

- (void)viewDidLoad {

    [super viewDidLoad];
    // Do any additional setup after loading the view.

    NSLog(@"Registering dragged types for collection view: %@", self.collectionView);
    [self.collectionView registerForDraggedTypes:@[NSFilenamesPboardType]];
    [self.collectionView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:YES];
    [self.collectionView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:NO];
}
然后实现这两种方法:

-(NSDragOperation)collectionView:(NSCollectionView *)collectionView validateDrop:(id<NSDraggingInfo>)draggingInfo proposedIndex:(NSInteger *)proposedDropIndex dropOperation:(NSCollectionViewDropOperation *)proposedDropOperation {

    NSLog(@"Validate drop: %@", draggingInfo);

    return NSDragOperationMove;
}

-(BOOL)collectionView:(NSCollectionView *)collectionView acceptDrop:(id<NSDraggingInfo>)draggingInfo index:(NSInteger)index dropOperation:(NSCollectionViewDropOperation)dropOperation {

    NSLog(@"Accept drop: %@", draggingInfo);

    return YES;
}
但是,当我试图将一个项拖到集合视图上时,这两个方法都没有被调用,这使我认为registerForDragedTypes:call没有按预期工作

这里有什么问题?我还需要研究什么?

从OS X 10.11开始,NSCollectionViewDelegate方法采用索引路径而不是索引。例如在

-(NSDragOperation)collectionView:(NSCollectionView *)collectionView validateDrop:(id<NSDraggingInfo>)draggingInfo proposedIndex:(NSInteger *)proposedDropIndex dropOperation:(NSCollectionViewDropOperation *)proposedDropOperation
在OS X 10.11中,NSCollectionViewDelegate方法采用索引路径而不是索引。例如在

-(NSDragOperation)collectionView:(NSCollectionView *)collectionView validateDrop:(id<NSDraggingInfo>)draggingInfo proposedIndex:(NSInteger *)proposedDropIndex dropOperation:(NSCollectionViewDropOperation *)proposedDropOperation

谢谢的复制件。注意:Xcode autocomplete是指旧的错误版本,永远不会被调用。它仍然存在于NSCollectionView.h中,尽管标记为old,但没有提到它不再工作。这对于macOS 10.14来说仍然是一个问题。谢谢。注意:Xcode autocomplete是指旧的错误版本,永远不会被调用。它仍然存在于NSCollectionView.h中,尽管标记为old,但没有提到它不再工作了。这对于macOS 10.14来说仍然是一个问题