首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >draggingEntered未触发

draggingEntered未触发
EN

Stack Overflow用户
提问于 2013-05-30 04:56:45
回答 2查看 675关注 0票数 0

我有一个NBox的子类,我想在一个名为dragBox的画布上拖动它。我不明白为什么draggingEntered没有在下面的代码中被触发。我得到了一个很好的滑回图像,但没有一个目的地代表被解雇。为什么?

代码语言:javascript
复制
-(void) awakeFromNib
{
  [[self superview] registerForDraggedTypes:[NSArray     arrayWithObject:NSFilenamesPboardType]];


}
-(void) mouseDown:(NSEvent *)theEvent
{
   [self dragImage:[[NSImage alloc] initWithContentsOfFile:@"/Users/bruce/Desktop/Untitled-1.png"] at:NSMakePoint(32, 32)  offset:NSMakeSize(0,0) event:theEvent pasteboard:[NSPasteboard pasteboardWithName:NSDragPboard] source:self slideBack:YES];




}
-(NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender // validate
{
NSLog(@"Updated");
return [sender draggingSourceOperationMask];

}

- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender {
NSLog(@"Drag Entered");

return [sender draggingSourceOperationMask];

}
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender {

 NSLog(@"Move Box");
[self setFrameOrigin:[sender draggingLocation]];


    return YES;
}

-(BOOL) prepareForDragOperation:(id<NSDraggingInfo>)sender
{NSLog(@"Prepared");
return YES;

}
EN

回答 2

Stack Overflow用户

发布于 2013-05-30 09:49:49

mouseDown方法中,在启动拖动操作之前,不会在粘贴板中放置任何内容。NSView的documentation指出,在将数据发送到该邮件之前,您需要将数据添加到粘贴板上。

无论你的目标视图是什么,或者应该是什么,都注册了某种拖拽类型。如果您的粘贴板没有任何与该类型匹配的数据,则目的地将不会触发任何NSDraggingProtocol消息。

票数 0
EN

Stack Overflow用户

发布于 2013-05-30 18:15:40

解决了!

我使用NSBox作为目标和源。在这种情况下,事件并没有被触发。我将registerDragTypes移到了超级视图和画布上,并在那里实现了draggingEntered和performDrag。它现在起作用了..。

布鲁斯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16823647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档