我从来没有与 NSViews 打过交道,所以我对此感到茫然。我有一个包含NSImage
ivar 的自定义类。我还有一个NSView
包含自定义类实例数组的子类。来自NSImage
自定义类的 被绘制在NSView
创建时的中心。我需要能够自由地拖动NSImage
它NSView
。
我已经实现了以下方法来开始:
-(void)mouseDown:(NSEvent *)theEvent
{
[self beginDraggingSessionWithItems: /* I don't know what to put here */
event:theEvent
source:self];
}
我尝试将NSImage
自定义类中的对象作为要拖动的项目放置在数组中,但引发异常。我也尝试在其中创建一个NSDraggingItem
放置但它无法将对象写入粘贴板并引发异常。
-(void)draggingSession:(NSDraggingSession *)session willBeginAtPoint:(NSPoint)screenPoint
{
NSLog(@"began");
}
-(void)draggingSession:(NSDraggingSession *)session movedToPoint:(NSPoint)screenPoint
{
NSLog(@"moved");
}
-(void)draggingSession:(NSDraggingSession *)session endedAtPoint:(NSPoint)screenPoint operation:(NSDragOperation)operation
{
NSLog(@"ended");
}
当我在我的子类周围单击并拖动鼠标时,这些方法会被正确调用,NSView
但是在我可以移动对象之前它们是无用的。
我相信答案可能是NSDraggingItem
为每个图像创建一个并使用它在视图中自由移动它们但是我无法让它与一个对象一起工作并且不知道如何正确实现这个想法。任何帮助表示赞赏。