1

我一直在寻找这个问题的答案,虽然我已经完成了这些步骤,但我似乎仍然无法调用 mouseDown 方法。我想要的是当用户单击并按住图像时,它应该打印出“鼠标按下!”。(最终我想要做的是用户单击并按住图像以播放声音,当他们放手时声音会停止)。

这就是我所拥有的。我的标题:

@interface MyNSImageView : NSImageView <NSImageDelegate> {
}
@end

我的班级:

@implementation MyNSImageView

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

     if ([[self target] respondsToSelector:[self action]]) {
     [NSApp sendAction:[self action] to:[self target] from:self];
     }
    NSLog(@"Mouse Down!");
}

@end

这看起来对吗?如果是这样,那么是否还有其他问题可能会干扰它?没有,我该怎么办?

多谢!

4

2 回答 2

4

这是我的解决方案:

在 NSImageView 上方添加一个不带边框或标题的不可见按钮。

:)

于 2014-11-29T12:02:19.647 回答
3

第一个想法:尝试实施acceptsFirstResponder并返回是。然后让您的代表将第一响应者设置为图像视图....

更新:

因此,我刚刚创建了一个新项目,并为其添加了一个 MyClass 类,它继承自 NSImageView。mouseDown 实现:

-(void)mouseDown:(NSEvent *)theEvent
{
NSLog(@"Mouse Down");
}

并实现了 initWithFrame:

- (id)initWithFrame:(NSRect)frameRect
{
    self = [super initWithFrame:frameRect];
    if (self) {
        NSURL *newURL = [[NSBundle mainBundle] URLForImageResource:@"ARandomImageIAddedtoProject"];
        NSImage *newImage = [[NSImage alloc] initWithContentsOfURL:newURL];
        [self setImage:newImage];
    }

return self;
}

使视图可见。

然后我通过向窗口添加自定义类并将自定义类的类更改为 MyClass 来编辑 nib 文件。它工作得很好,所以我不知道有什么问题。

于 2011-08-09T23:59:24.327 回答