Ну, вам нужно реализовать протокол NSDraggingDestination, который, как я полагаю, вы уже прочитали.Вы можете реализовать его либо в определенном виде, либо во всем окне - похоже, вы принимаете перетаскивание файлов на уровне приложения, поэтому вы, вероятно, хотите, чтобы все окно принимало перетаскивание.В любом случае, как только вы запустите его, вы увидите, как его настроить.
Подкласс NSWindow.Первый шаг - указать, какие типы перетаскивания вас интересуют.
Скажите вашему пользовательскому окну, что его интересуют имена файлов:
- (void)awakeFromNib {
[self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
}
Скажите OS X, какой тип курсора отображать:
- (NSDragOperation)draggingEntered:(id < NSDraggingInfo >)sender {
return NSDragOperationCopy;
}
- (NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)sender {
return NSDragOperationCopy;
}
Выполните перетаскивание:
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
NSPasteboard *pboard = [sender draggingPasteboard];
NSArray *filenames = [pboard propertyListForType:NSFilenamesPboardType];
if (1 == filenames.count)
if ([[NSApp delegate] respondsToSelector:@selector(application:openFile:)])
return [[NSApp delegate] application:NSApp openFile:[filenames lastObject]];
return NO;
}
Это самый необходимый минимум, чтобы заставить его работать.