如何启用对IKImageBrowserView的特定项目的拖动?

时间:2011-07-18 18:49:15

标签: objective-c cocoa ikimagebrowserview imagekit

我正在为我正在开发的mac应用程序使用IKImageBrowserView,并希望在IKImageBrowserView中启用拖动,所以我使用了– setAllowsDroppingOnItems:但不幸的是,这不允许我指定哪些项目符合条件作为一个放置目的地,所以问题的第一部分将是如果有一个简单而直接的方法来做到这一点。

我搜索了文档,并提出了一种使用拖动委托方法- (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender

的方法
NSUInteger index = [browserView indexOfItemAtPoint:sender.draggingLocation];
    if(index != NSNotFound)
    {
        WCItemObject *browserCell = (WCItemObject *)[self.items objectAtIndex:index];

        NSLog(@"%@", browserCell.path);
    }

从逻辑上讲,这应该有效,但事实并非如此。如果项目很少(不显示垂直滚动条),它只会给出正确的对象,这导致我认为indexOfItemAtPoint不考虑滚动视图,所以我可能需要覆盖它,如果是这样(这是第二部分)问题)我该怎么做。

1 个答案:

答案 0 :(得分:0)

我通过使用indexAtLocationOfDroppedItem(一种IKImageBrowserView方法)来实现它,从名称和文档中听起来好像只是在丢弃发生后才更新,但实际上在悬停时更新。