2017-05-09 14 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]; 
} 

그리고 구현 이러한 두 가지 방법 :

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

끌고 유형 (들)에 대한

등록 그러나 콜렉션 뷰에 항목을 드래그하려고 할 때 두 메서드 중 아무 것도 호출되지 않습니다. 따라서 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