2013-05-29 2 views
0

У меня есть подкласс NBox, который я бы хотел перетащить на холст под названием dragBox. Я не понимаю, почему draggingEntered не запускается в следующем коде. Я получаю хорошее изображение слайдов, но ни один из делегатов назначения не уволен. Зачем?draggingEntered not firing

-(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; 

} 
+0

NBox ... Что такое NBox? XBox? NSImageView? –

ответ

0

В вашем методе mouseDown вы ничего не вкладывая в монтажном столе, прежде чем начать операцию перетаскивания. documentation для NSView утверждает, что вам необходимо добавить свои данные в картотеку, прежде чем отправлять его этому сообщению.

Независимо от того, какие точки назначения у вас есть или должны быть зарегистрированы для определенного типа перетаскивания. Если в вашем картотеке нет соответствующих данных для этого типа, адресаты не будут запускать ни одно из сообщений NSDraggingProtocol.

+0

Здравствуйте, я попытался настроить NSStringPboardType перед вызовом drag_mage. Это не сработало. Тем не менее никаких событий не увольняют. – bc888

0

Решенный!

Я использовал NSBox как место назначения, так и источник. Когда это было так, события не увольнялись. Я переместил registerDragTypes в супервизор, холст и реализовал draggingEntered и performDrag. Он работает сейчас ...

Bruce

+0

Я собирался прокомментировать это, но я предполагал, что вы перетаскиваете один из экземпляров NSBox на другие экземпляры NSBox, которые бы сработали. : / –

 Смежные вопросы

  • Нет связанных вопросов^_^