我一直在寻找这个问题的答案,当我完成这些步骤时,我仍然无法调用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
这看起来不错吗?如果是这样,那么还有其他问题可能会干扰它吗?不,我该怎么办?
谢谢堆!
答案 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文件。它工作得很好,所以我不知道什么是错的。