Arrastre un botón en OSX 10.8 SDK / object-c

Comencé a usar objectivo-choy con el fin de desarrollar una aplicación para OSX (león de montaña). Tengo un montón de botones que me gustaría arrastrarlos a algún otro objeto, por ejemplo, un campo de texto. Seguí los tutoriales en el sitio de desarrollo de Apple, pero no pude hacer funcionar la parte de arrastre (la parte de soltar funciona, por ejemplo, puedo arrastrar un archivo desde el buscador a un archivo de texto y mostrar su ruta).

Comencé creando una subclase de NSButton:@interface mp3OCDDraggableButton : NSButton

e implementado los métodos descritos en:https://developer.apple.com/library/mac/#samplecode/CocoaDragAndDrop/Introduction/Intro.html

¡Pero la cosa no se mueve!

Puse algunos mensajes de registro en mouseDown :, que puedo ver, pero no si los reemplazo con mouseDragged: - ¿esto me dice algo?

¿Alguien puede publicar un ejemplo simple con esta funcionalidad? No pude encontrar nada que funcione:

¡Muchas gracias de antemano!

Este es el código que tengo hasta ahora para el botón que se puede arrastrar. Más o menos lo mismo que en el tutorial.

//myDraggableButton.h

@interface myDraggableButton : NSButton <NSDraggingSource, NSPasteboardItemDataProvider>
@end

y

//myDraggableButton.m

#import "myDraggableButton.h"

@implementation myDraggableButton

- (void)mouseDown:(NSEvent *)theEvent:(NSEvent*)event
{

    NSLog(@"mouseDown");

    NSPasteboardItem *pbItem = [NSPasteboardItem new];
    [pbItem setDataProvider:self forTypes:[NSArray arrayWithObjects:NSPasteboardTypeString, nil]];
    NSDraggingItem *dragItem = [[NSDraggingItem alloc] initWithPasteboardWriter:pbItem];
    NSRect draggingRect = self.bounds;
    [dragItem setDraggingFrame:draggingRect contents:[self image]];
    NSDraggingSession *draggingSession = [self beginDraggingSessionWithItems:[NSArray arrayWithObject:dragItem] event:event source:self];
    draggingSession.animatesToStartingPositionsOnCancelOrFail = YES;
    draggingSession.draggingFormation = NSDraggingFormationNone;
}

- (NSDragOperation)draggingSession:(NSDraggingSession *)session sourceOperationMaskForDraggingContext:(NSDraggingContext)context
{
    switch (context) {
        case NSDraggingContextOutsideApplication:
            return NSDragOperationCopy;
        case NSDraggingContextWithinApplication:
        default:
            return NSDragOperationCopy;
            break;
    }
}

- (BOOL)acceptsFirstMouse:(NSEvent *)event
{
    return YES;
}

- (void)pasteboard:(NSPasteboard *)sender item:(NSPasteboardItem *)item provideDataForType:(NSString *)type
{
    if ( [type compare: NSPasteboardTypeTIFF] == NSOrderedSame ) {
        [sender setData:[[self image] TIFFRepresentation] forType:NSPasteboardTypeTIFF];
    } else if ( [type compare: NSPasteboardTypePDF] == NSOrderedSame ) {
        [sender setData:[self dataWithPDFInsideRect:[self bounds]] forType:NSPasteboardTypePDF];
    }

}

@end