2011-11-03 73 views
2

我有我的可可的OpenGL應用一個問題 - 每次使用keyUp/的KeyDown事件被觸發時,系統聲音正在播放...我如何禁用這個邏輯我的應用程序?如何關閉Cocoa應用程序中的鍵盤聲音?

我有一種不好的感覺,對於一些奇怪的原因,我的應用程序可以把按鍵爲錯誤和播放系統提示音...請幫助!

+0

你見過NSSound類引用? 「 - (空)setVolume:(浮動)卷」 –

+0

這很有趣,然而,這是不是一個靜態的方法,我不能禁用所有與它的聲音......我的應用程序不以任何方式使用可可音頻服務.. 。 – Ryan

回答

2

添加到您的NSView/NSWindow的子類

- (void)keyDown:(NSEvent *)theEvent { 

,並在上下鍵例外,但對於其他[超級的keyDown:theEvent]。

我認爲這是可以感知

+0

這對我有用。當你不希望它發出嗶聲時,在keyDown中返回nil。 –

+0

當你說把這個添加到NSView,你的意思是NSView的子類的文件,對吧? – milesper

+0

@milesper當然 – SAKrisT

0
  1. 創建一個可可類,從的NSView繼承它
  2. 其設置成故事板
  3. 類爲您查看的不是標準的灰色顯示的NSView添加以下你的子類實現:
 
@implementation YourCustomNSView 

- (BOOL)acceptsFirstResponder { 
    return YES; 
} 

- (void)keyDown:(NSEvent *)theEvent { 

    NSLog (@"keypress %@", theEvent); 
// [super keyDown:theEvent]; // this line triggers system beep error, there's no beep without it 
} 

@end