У меня есть подкласс NSView, который регистрирует файлы для перетаскивания в методе инициализации следующим образом:
[self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
Перетаскивание работает отлично, но если я добавлю подпредставление для этого представления с точно такой же рамкой, оно больше не будет работать. Я предполагаю, что подпредставление блокирует событие перетаскивания, чтобы перейти в супер-просмотр. Могу ли я избежать этого? Спасибо
Кроме того, я знаю, что задаю два вопроса, но я не хочу создавать новую тему только для этого: когда я перетаскиваю, мой курсор не меняется на знак "+", как с другими перетаскиваниями, Как мне это сделать?
Еще раз спасибо.
UPDATE:
Вот как я настроил его в моем IB:
DrawView - это пользовательский класс, о котором я говорил, который зарегистрирован для перетаскиваемых типов. А представление «Изображение» - это просто подпредставление, я перетащил изображение из раздела «Медиа» ...
Если это поможет, вот мой соответствующий код для DragView:
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender {
return NSDragOperationCopy;
}
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender {
NSPasteboard *pboard;
pboard = [sender draggingPasteboard];
NSArray *list = [pboard propertyListForType:NSFilenamesPboardType];
if ([list count] == 1) {
BOOL isDirectory = NO;
NSString *fileName = [list objectAtIndex:0];
[[NSFileManager defaultManager] fileExistsAtPath:fileName
isDirectory: &isDirectory];
if (isDirectory) {
NSLog(@"AHH YEA");
} else {
NSLog(@"NOO");
}
}
return YES;
}