2010-11-01 105 views
2

我有一個NSWindowController的子類。在我的子類中,我有一個keyDown:方法。更改默認幫助鍵行爲

當我按鍵盤上的幫助鍵時,我的keyDown:方法沒有被調用,我希望它是因爲我需要做一些自定義的東西。

現在,當我按下幫助鍵時,光標變爲問號。

任何人都知道如何覆蓋幫助鍵的默認行爲?

回答

0

我已經能夠找到的最佳解決方案是使用NSContextHelpModeDidActivateNotification來檢測何時進入此模式。

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(helpContextModeActivated:) 
              name:NSContextHelpModeDidActivateNotification 
              object:nil]; 

當選擇器被調用時,簡單地調用:

[NSHelpManager setContextHelpModeActive:NO]; 

停用模式和改變光標回來。

+0

嗨。這是非常晚,是不是,特別是對於不同的= P這個代碼用於禁用幫助行爲,但它不會將原始keyDown:發送到關鍵窗口的第一響應者。我可以合成一個虛假的keyDown:並自己發送,但是我想在謹慎的方面犯錯,文檔會說「通常」:是否可以通過除了幫助鍵以外的其他方式發送此通知?例如,系統中的其他鍵盤快捷鍵或鍵+鼠標組合或GUI程序?謝謝! – andlabs 2014-06-07 06:30:13

+0

沒關係; [此修復](http://stackoverflow.com/a/24101192/3408572),並不需要注意通知啓動。不管怎麼說,還是要謝謝你! – andlabs 2014-06-08 00:00:19

0

這是來自NextStep的中斷保留。

我在2006年6月提交了關於此問題的a bug report。它被封爲「行爲正確」,指出這是一種「上下文感應幫助模式」,並注意到Apple鍵盤不再有幫助鍵。

我反對說,對於用戶或開發人員沒有這方面的文檔,因此在任何情況下幫助模式永遠不會提供實際幫助。然後它被重新分類爲錯誤#3776278的重複。最後我檢查了一下(radarweb目前正在關閉),這並沒有改變。

我建議根據一般原則提交一份重複的錯誤報告,但不要在這方面付出太多努力,因爲它會被忽略。