2012-12-19 37 views
6

Mam trochę NSImageView w mojej aplikacji Mac, gdzie użytkownik może przeciągnąć obiekty takie jak .png lub .pdf, aby zapisać je w domyślnych ustawieniach wspólnych użytkownika, co działa dobrze.NSImageView kliknij dwukrotnie działanie

Chciałbym ustawić akcję dla podwójnego kliknięcia na NSImageView, ale wydaje się to trochę trudne (nie miałem problemów z NSTableView, ale "setDoubleAction" nie jest dostępne dla NSImage i ton odpowiedzi (tutaj albo z google) dotyczących działań NSImageView za punkt do dokonywania NSButton zamiast NSImageView, więc to nie pomoże)

tutaj jest częścią mojego AppDelegate.h:

@interface AppDelegate : NSObject <NSApplicationDelegate>{ 

    (...) 

    @property (assign) IBOutlet NSImageView *iconeStatus; 

    (...) 

@end 

i tu jest część mojego AppDelegate.m:

#import "AppDelegate.h" 

@implementation AppDelegate 

(...) 

@synthesize iconeStatus = _iconeStatus; 

(...) 

- (void)awakeFromNib { 

    (...) 

[_iconeStatus setTarget:self]; 
[_iconeStatus setAction:@selector(doubleClick:)]; 

    (...) 

} 

(...) 

- (void)doubleClick:(id)object { 
     //make sound if that works ... 
     [[NSSound soundNamed:@"Basso"] play]; 

} 

Ale to nie działa.

Czy ktoś może mi powiedzieć, jaki jest najłatwiejszy sposób na zrobienie tego?

Odpowiedz

8

Trzeba podklasy NSImageView i dodaj następującą metodę realizacji podklasie za:

- (void)mouseDown:(NSEvent *)theEvent 
{ 
    NSInteger clickCount = [theEvent clickCount]; 

    if (clickCount > 1) { 
     // User at least double clicked in image view 
    } 
} 
Powiązane problemy