NSImageView双击动作(NSImageView double click action)

2019-08-04 09:08发布

我有一些NSImageView在我的Mac应用程序,用户可以像drag'n或巴纽.PDF删除对象,并将其存储到用户共享默认值,工作正常。

我现在想设置这些NSImageView当用户双击一个动作,但它似乎是有点困难(我有NSTableView的任何麻烦,但“setDoubleAction”不适用于NSImage中,和成吨的答案(点击这里或与谷歌)关于NSImageView的行动指向制作NSButton代替NSImageView,这样就不会帮助)

这里是我的AppDelegate.h的一部分:

@interface AppDelegate : NSObject <NSApplicationDelegate>{

    (...)

    @property (assign) IBOutlet NSImageView *iconeStatus;

    (...)

@end

这里是我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];

}

但是,这并不工作。

谁能告诉我什么是做到这一点的最简单的方法?

Answer 1:

你需要继承NSImageView并添加下面的方法来子类的实现:

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

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


Answer 2:

雨燕为4.代码再次NSImageView的子类,而鼠标按下功能将被覆盖。

class MyImageView: NSImageView {

    override func mouseDown(with event: NSEvent) {
        let clickCount: Int = event.clickCount

        if clickCount > 1 {
            // User at least double clicked in image view
        }
    }

}


Answer 3:

使用另一种解决方案extension

extension NSImageView {
    override open func mouseDown(with event: NSEvent) {
        // your code here
    }
}

虽然这将是功能添加到每NSImageView,所以也许这不是你要找的内容。



文章来源: NSImageView double click action