Macos 无法拖到NSCollectionViewItem中的图像上
我正在设计一个类似Finder的文件夹浏览器应用程序。我希望使用户能够从应用程序外部拖动文件,并将其放到我的应用程序中的文件夹中,从而将拖动的项目添加到该文件夹中 我的自定义NSCollectionViewItem对象ArchiveCollectionViewItem由一个NSImageView和一个NSTextField组成。图像视图连接到ArchiveCollectionViewItem的imageView出口,文本字段连接到textField出口 在collectionView:itemForRepresentedObjectAtIndexPath:中,我找到一个与NSCollectionViewItem相对应的项并显示它:Macos 无法拖到NSCollectionViewItem中的图像上,macos,nscollectionview,nscollectionviewitem,Macos,Nscollectionview,Nscollectionviewitem,我正在设计一个类似Finder的文件夹浏览器应用程序。我希望使用户能够从应用程序外部拖动文件,并将其放到我的应用程序中的文件夹中,从而将拖动的项目添加到该文件夹中 我的自定义NSCollectionViewItem对象ArchiveCollectionViewItem由一个NSImageView和一个NSTextField组成。图像视图连接到ArchiveCollectionViewItem的imageView出口,文本字段连接到textField出口 在collectionView:itemF
- (NSCollectionViewItem *)collectionView:(NSCollectionView *)collectionView
itemForRepresentedObjectAtIndexPath:(NSIndexPath *)indexPath
{
if (collectionView == self.collectionView && 0 == indexPath.section)
{
NSCollectionViewItem *item =
[collectionView makeItemWithIdentifier:@"ArchiveCollectionViewItem" forIndexPath:indexPath];
if (item && [item isKindOfClass:[ArchiveCollectionViewItem class]])
{
ArchiveCollectionViewItem *archiveCollectionViewItem = (ArchiveCollectionViewItem *) item;
ArchiveItemViewModel *archiveItem = [self archiveItemAtIndexPath:indexPath];
archiveCollectionViewItem.archiveItemViewModel = archiveItem;
return archiveCollectionViewItem;
}
else
{
return item;
}
}
else
{
return nil;
}
}
ArchiveCollectionViewItem的setArchiveItemViewModel方法如下:
- (void)setArchiveItemViewModel:(ArchiveItemViewModel *)archiveItemViewModel
{
_archiveItemViewModel = archiveItemViewModel;
NSString *itemName = archiveItemViewModel.name;
NSImage *itemImage = archiveItemViewModel.isFolder ?
[NSImage imageNamed:NSImageNameFolder] :
[[NSWorkspace sharedWorkspace] iconForFileType:itemName.pathExtension.lowercaseString];
self.imageView.image = itemImage;
self.textField.stringValue = itemName;
}
除将项目拖到ArchiveCollectionViewItem的图像上外,所有操作均按预期进行。当我将一个项目拖到ArchiveCollectionViewItem的非图像部分时,我会得到一个绿色的加号,表示一个有效的拖放:
但是,当我将项目拖到图像部分时,绿色加号消失。此外,不会调用collectionView:validateDrop:proposedIndexPath:dropOperation:
我应该如何使整个ArchiveCollectionViewItem视图接受删除?或者这是不可能的/不允许的
大多数其他NSCollectionView拖放问题关注于在应用程序内拖放以重新排列,或从应用程序内部拖放到应用程序外部。清楚地说,这两个都不是我的用例。到目前为止,我还没有找到另一个与我类似的问题,因此如果存在,请接受我的道歉并将我与之联系起来 即使图像视图不可编辑,它显然仍能处理拖放操作。要修复此问题,请调用图像视图的UnregisterDragedTypes方法
同样的问题:。谢谢,看来这就成功了。我从来没有想到NSImageView会有这样的方法。