我有一個Cocoa應用程序,通過視圖層次結構中的自定義視圖來捕獲按鍵。該視圖實現keyUp
和keyDown
方法,並接收按鍵。即使如此,可可仍然堅持每次按下按鍵時播放系統錯誤聲音。任何解決方案沉默可可錯誤蜂鳴器
注意:儘管我試圖讓這個視圖成爲第一響應者,但它不起作用。這可能與它有關。
我有一個Cocoa應用程序,通過視圖層次結構中的自定義視圖來捕獲按鍵。該視圖實現keyUp
和keyDown
方法,並接收按鍵。即使如此,可可仍然堅持每次按下按鍵時播放系統錯誤聲音。任何解決方案沉默可可錯誤蜂鳴器
注意:儘管我試圖讓這個視圖成爲第一響應者,但它不起作用。這可能與它有關。
如果您沒有成功嘗試將視圖設置爲第一響應者,很可能是因爲NSView
對於acceptsFirstResponder
返回NO
。你可以有你NSView
子類中重寫acceptsFirstResponder
返回YES:
- (BOOL)acceptsFirstResponder {
return YES;
}
這應該消除蜂鳴聲。或者,你可以有NSView
子類中重寫NSResponder
的performKeyEquivalent:
方法返回YES,這也應該消除NSBeeps:
- (BOOL)performKeyEquivalent:(NSEvent *)event {
return YES;
}
UPDATE:
不知道該有什麼建議。我其實寫了一個「鍵盤清潔助手」的應用程序,旨在基本上做你想要的東西類似。 (我在筆記本電腦上使用它時,我想清潔鍵盤,並沒有數百個按鍵來隨機重命名文件或導致重複的錯誤嘟嘟聲)。
示例項目:http://www.markdouma.com/developer/KeyboardCleanerHelper.zip
運行該應用程序,我不能讓它的嘟嘟聲(通知呼叫都記錄到控制檯)。
它現在是'accepFirstResponder'嗎?哇。我現在不在我的Mac,但我會嘗試並接受。感謝這個煩人的問題的答案。 – Linuxios
@Linuxios:你的意思是「現在acceptFirstResponder'嗎?」它曾經是什麼?或者你可能指的是你使用的方法試圖使視圖成爲第一響應者? – NSGod
我認爲這是'canBecomeFirstResponder'。我現在在我的Mac上,我會試試看。 – Linuxios