I have some NSImageView in my Mac App where the user can drag'n drop objects like .png or .pdf, to store them into User Shared Defaults, that works fine.
I would now like to set an action for when user double click on these NSImageView, but it seems to be a little bit difficult (I had no trouble for NSTableView, but 'setDoubleAction' is not available for NSImage, and tons of answers (here or with google) concerning NSImageView's actions point to making a NSButton instead of NSImageView, so that doesn't help)
Here is part of my AppDelegate.h:
@interface AppDelegate : NSObject <NSApplicationDelegate>{
(...)
@property (assign) IBOutlet NSImageView *iconeStatus;
(...)
@end
and here is part of my 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];
}
But that doesn't work.
Can anyone tell me what's the easiest way to do this ?
Another solution using
extension
:Although this will add that functionality to every NSImageView, so perhaps that's not what you're looking for.
Code for Swift 4. Again the NSImageView is subclassed and the mouseDown function is overridden.
You need to subclass NSImageView and add the following method to your subclass's implementation: