2011-08-09 67 views
1

我一直在尋找這個問題的答案,雖然我已經完成了這些步驟,但我仍然無法得到要調用的mouseDown方法。 我想要的是,當用戶點擊並按住圖像時,它應該打印出「Mouse down!」。 (最終我想要做的是用戶點擊並按住圖像,使聲音播放,當他們放開聲音將停止)。mouseDown沒有檢測到我的NSImageView

這是我的。我的頭:

@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

首先想到:嘗試實施acceptsFirstResponder並返回yes。然後讓你的代理設置的第一個響應者的圖像視圖....

UPDATE:

所以,我剛剛創建了一個新的項目,並增加了一個MyClass類給它,它從NSImageView繼承。鼠標按下實現:

-(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文件。它運行良好,所以我不知道什麼是錯的。

+0

我剛剛這樣做,但仍然沒有打印出來。我做了兩個按鈕 - 會干擾initFirstResponder嗎? (儘管我只有一個作爲第一響應者) – Moonlight293

+0

哈 - 我可能已經明白了爲什麼。當我改變它時,我的xib文件沒有更新。我正在使用Xcode 4 - 有任何想法,爲什麼它不工作? – Moonlight293

+0

我不知道 - 你編輯後保存xib文件嗎?你有權限編輯文件嗎?除此之外,我不知道什麼是錯的。我用我的測試更新我的答案.. – Daniel

2

這裏是我的解決方案:

添加隱形按鈕沒有NSImageView上述邊框或標題。

:)

+0

'[button setTransparent:YES];' –