我的NSImageView未检测到mouseDown

时间:2011-08-09 23:35:02

标签: objective-c nsimageview mousedown

我一直在寻找这个问题的答案,当我完成这些步骤时,我仍然无法调用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

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

谢谢堆!

2 个答案:

答案 0 :(得分:4)

这是我的解决方案:

在NSImageView上方添加一个没有边框或标题的隐藏按钮

:)

答案 1 :(得分:2)

首先想到:尝试实施acceptsFirstResponder并返回yes。然后让你的代表将第一个响应者设置为图像视图....

更新:

所以,我刚创建了一个新项目,并为其添加了一个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文件。它工作得很好,所以我不知道什么是错的。