when you want to use drag 
(1)
-(void)_subscribe{    
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(_draggingConcludedHandler:) 
                                                 name:DraggingConcludedNotification 
                                               object:nil];
}
-(void)_unsubscribe{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
-(void)_draggingConcludedHandler:(NSNotification *)aNotification{
    DraggingView *aView = (DraggingView *)[aNotification object];
    
    for (IconImageView *childView in self.childViews){
        [childView setTargetImage:[aView targetImage]];
    }
}
(2)
#import <Cocoa/Cocoa.h>
/**
 * Drag&Drop detecting view fully convered on the main window's content view.
 */
@interface DraggingView : NSView{
    NSImage *_targetImage;
    BOOL _highlighted;
}
@property (nonatomic, retain) NSImage *targetImage;
@property (nonatomic, assign) BOOL highlighted;
@end
#import "DraggingView.h"
//Private
@interface DraggingView ()
-(void)_setup;
@end
@implementation DraggingView
@synthesize targetImage = _targetImage;
@synthesize highlighted = _highlighted;
-(void)awakeFromNib{
    [self registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, NSTIFFPboardType, nil]];
    [self _setup];
}
-(void)drawRect:(NSRect)dirtyRect{
    if (_highlighted) {
        [[NSColor blueColor] set];
        NSFrameRect([self bounds]);
    }
}
-(void)dealloc{
    self.targetImage = nil;
    [super dealloc];
}
#pragma mark -
#pragma mark Accessors
-(void)setHighlighted:(BOOL)yn{
    _highlighted = yn;
    [self setNeedsDisplay:YES];
}
#pragma mark -
#pragma mark Private 
-(void)_setup{
    self.highlighted = NO;
}
@end
 
No comments:
Post a Comment