2017-05-09 9 views
0

おそらく私は作っている間違いがありますが、最も基本的な方法でも動作するようにNSCollectionViewにファイルをドロップすることはできません。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]; 
} 

し、実装これらの2つの方法:

-(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; 
} 

ドラッグタイプ(複数可)について

登録しかし、コレクションビューにアイテムをドラッグしようとすると、2つのメソッドのどれも呼ばれることはなく、registerForDraggedTypes:コールが期待どおりに機能していないと思うようになります。

ここで問題になるのは何ですか?何を調べなければなりませんか?

+0

重複(http://stackoverflow.com/q/42329390/4244136) – Willeke

答えて

1

OS X 10.11より、NSCollectionViewDelegateメソッドは、インデックスではなくインデックスパスを使用します。例えば

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

proposedIndex:パラメータは[NSCollectionView内部ドラッグアンドドロップするための例]のproposedIndexPath:

- (NSDragOperation)collectionView:(NSCollectionView *)collectionView validateDrop:(id <NSDraggingInfo>)draggingInfo proposedIndexPath:(NSIndexPath * __nonnull * __nonnull)proposedDropIndexPath dropOperation:(NSCollectionViewDropOperation *)proposedDropOperation 
+0

に置き換えられありがとう。注:Xcodeのオートコンプリートは、決して呼び出されない古い(間違った)バージョンを示唆しています。 NSCollectionView.hにはまだ存在していますが、古いものとしてマークされていますが、それ以上は動作しないとは言いません。 – fbitterlich

関連する問題