Помощь с перетаскиванием внутри приложения - Какао - PullRequest
0 голосов
/ 11 января 2010

Хорошо, у меня есть специальный класс с именем «Задача», который представляет задачу, которую нужно выполнить. У меня есть 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 даже не использует методы перетаскивания, описанные выше. Что дает?

Ответы [ 2 ]

0 голосов
/ 12 января 2010

Прежде всего, вы должны использовать свое собственное доменное имя, а не «com.yourcompany», в UTI.

Во-вторых, вы экспортировали UTI в свой Info.plist ?

0 голосов
/ 11 января 2010

Вы определили свой класс Calendar для реализации протокола перетаскивания назначения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...