2012-11-22 35 views
3

我有一個Cocoa應用程序,通過視圖層次結構中的自定義視圖來捕獲按鍵。該視圖實現keyUpkeyDown方法,並接收按鍵。即使如此,可可仍然堅持每次按下按鍵時播放系統錯誤聲音。任何解決方案沉默可可錯誤蜂鳴器

注意:儘管我試圖讓這個視圖成爲第一響應者,但它不起作用。這可能與它有關。

回答

5

如果您沒有成功嘗試將視圖設置爲第一響應者,很可能是因爲NSView對於acceptsFirstResponder返回NO。你可以有你NSView子類中重寫acceptsFirstResponder返回YES:

- (BOOL)acceptsFirstResponder { 
    return YES; 
} 

這應該消除蜂鳴聲。或者,你可以有NSView子類中重寫NSResponderperformKeyEquivalent:方法返回YES,這也應該消除NSBeeps:

- (BOOL)performKeyEquivalent:(NSEvent *)event { 
    return YES; 
} 

UPDATE:

不知道該有什麼建議。我其實寫了一個「鍵盤清潔助手」的應用程序,旨在基本上做你想要的東西類似。 (我在筆記本電腦上使用它時,我想清潔鍵盤,並沒有數百個按鍵來隨機重命名文件或導致重複的錯誤嘟嘟聲)。

示例項目:http://www.markdouma.com/developer/KeyboardCleanerHelper.zip

運行該應用程序,我不能讓它的嘟嘟聲(通知呼叫都記錄到控制檯)。

+0

它現在是'accepFirstResponder'嗎?哇。我現在不在我的Mac,但我會嘗試並接受。感謝這個煩人的問題的答案。 – Linuxios

+0

@Linuxios:你的意思是「現在acceptFirstResponder'嗎?」它曾經是什麼?或者你可能指的是你使用的方法試圖使視圖成爲第一響應者? – NSGod

+0

我認爲這是'canBecomeFirstResponder'。我現在在我的Mac上,我會試試看。 – Linuxios