2014-06-07 51 views
1

在我的NSView子類,當我輸入,例如,命令+ J,我看到了flagsChanged:的命令被按下,然後keyDown:對於j ...,然後命令的flagsChanged:被釋放。我從來沒有看到一個keyUp: J.如何在持有Command鍵的NSView中檢測keyUp:?

我試圖覆蓋performKeyEquivalent:,它看起來像它做了我想要的,但是這是發送之前keyDown:

那麼,有沒有別的東西我失蹤趕keyUp:事件?

這次沒有樣本程序,對不起。謝謝!

回答

1

前段時間我也遇到過這個問題。問題似乎是NSApplication正在吃掉Cmd鍵的keyUp(或flagsChanged)。

實際上我找到了兩種解決方案。 首先是壓倒一切的NSApplication這裏還描述:

http://lists.apple.com/archives/cocoa-dev/2003/Oct/msg00442.html

另外就是做一些自己的邏輯來檢測的關鍵了Cmd鍵的如下描述:

Command-Key-Up Cocoa

然而,第二個選項可能不起作用,因爲您不想檢測Cmd keyUp,而是檢測J keyUp。儘管如此,這應該是可能的。

+0

第一個對我很好,事實上,它也解決了我的問題[這裏](無需做任何我答覆的答案)(http://stackoverflow.com/questions/4072250/changing-default-help-key-behavior/4078542#comment37162930_4078542)要做。謝謝! ([代碼我現在,以供參考。(https://github.com/andlabs/ui/blob/bc848f5c4078b999dbe6ef1cd90e16290a0d1c3a/delegateuitask_darwin.m#L46)) – andlabs

+0

如果我繼承'NSOpenGLView',而不是'的NSView '?我認爲如果我將'NSOpenGLView'改爲'NSApplication',它可能會破壞某些東西。有任何想法嗎? –

相關問題