Благодарю. Примечание: автозаполнение XCode предлагает старую (неправильную) версию, которая никогда не будет вызвана. Он все еще присутствует в NSCollectionView.h, и хотя помечен как «старый», он не упоминает, что он больше не работает.
жно, я допускаю простую ошибку, но я просто не могу заставить файлы сбрасываться в 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:
звонок не работает, как ожидалось.
В чем может быть проблема здесь? Что еще мне нужно посмотреть?