Хорошо, у меня есть специальный класс с именем «Задача», который представляет задачу, которую нужно выполнить. У меня есть NSMatrix, который действует как календарь. Я хочу, чтобы пользователь мог перетаскивать значок из nscollectionview (у меня не было проблем с настройкой nscollectionview) в ячейку в nsmatrix, тем самым назначая эту задачу на тот день. Я просто не могу заставить nsmatrix реагировать на перетаскивание или падение.
Я реализовал метод:
- (BOOL)collectionView:(NSCollectionView *)cv writeItemsAtIndexes:(NSIndexSet *)indexes toPasteboard:(NSPasteboard *)pasteboard
{
[pasteboard declareTypes:[NSArray arrayWithObject:TASK_UTI] owner:self];
NSUInteger index=[indexes firstIndex];
Task* task=[[cv content] objectAtIndex:index];
NSData* taskData=[NSKeyedArchiver archivedDataWithRootObject:task];
[taskData retain];
BOOL success=[pasteboard setData:taskData forType:TASK_UTI];
return success;
}
в моем делегате nscollectionview, как показано выше.
Я отправил [self registerForDraggedTypes: [NSArray arrayWithObjects: TASK_UTI, nil]] в моем подклассе NSMatrix (называется «Календарь»).
Я реализовал методы:
- (NSDragOperation)draggingEntered:(id < NSDraggingInfo >)sender
- (BOOL)prepareForDragOperation:(id < NSDraggingInfo >)sender
- (BOOL)performDragOperation:(id < NSDraggingInfo >)sender
в моем классе Calendar (NSMatrix).
Некоторые отладки показывают, что объект NSMatrix / Calendar даже не использует методы перетаскивания, описанные выше. Что дает?