Благодарю. Примечание: автозаполнение 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: звонок не работает, как ожидалось.

В чем может быть проблема здесь? Что еще мне нужно посмотреть?

Ответы на вопрос(1)

Ваш ответ на вопрос