我正在为当前正在开发的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不能解决滚动视图,因此如果这样,我可能需要覆盖它(这是第二部分)问题)我该怎么做。

最佳答案

我通过使用indexAtLocationOfDroppedItem(IKImageBrowserView的一种方法)使其工作,从名称和文档的角度来看,如果仅在放置后发生更新,但实际上是在悬停时进行更新。

关于objective-c - 如何在IKImageBrowserView的特定项目上启用拖动?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6737789/

10-10 06:13