2014-02-25 123 views
2

例如,我有一個NSMenuItem類型變量,其標題爲「歷史」。我需要一個鍵盤快捷鍵元+ H做同樣的事情,點擊該菜單項(彈出子菜單列表)..模擬鼠標點擊可可中的菜單項?

我覺得可能是實現這兩種方法:

1 .bind這個菜單項的快捷鍵,然後將可可將觸發執行時,該快捷方式被激發

2.not鍵盤快捷鍵結合到該項目的動作屬於該項目。創建元+ H,當事件被激活的事件處理程序,模擬在菜單項上點擊鼠標。

然而,這兩種方法都不對現在的工作。

對於鍵盤快捷鍵,有一個名爲setKeyEquivalent方法,但它使用命令,而不是作爲改性劑。其結果是執行動作綁定到菜單項,而不是彈出一個子菜單。

點擊鼠標的模擬,在可可的NSMenuItem參考,我還沒有看到如何像click發送事件到NSMenuItem ..

有沒有人有這個想法?謝謝!

+0

哪些關鍵是元? – uchuugaka

+0

除非您的建築物輔助功能或自動化工具,否則您確實不想模擬鼠標點擊菜單。它需要擺弄奔跑 – uchuugaka

回答

2
[menuItem setKeyEquivalent:@" "]; 
[menuItem setKeyEquivalentModifierMask:0]; 

與任何這些修飾鍵掩模的(使用C位OR運算符相結合):

  • NSShiftKeyMask
  • NSAlternateKeyMask
  • NSCommandKeyMask
  • NSControlKeyMask

(順便說一句,Apple's docs可真有用!)

+0

可以是有用的,但也令人憤怒。祝你好運找到可能的鍵字符串。 – uchuugaka

+0

@uchuugaka文檔並不總是很好 - 真實。但是,在'setKeyEquivalentModifierMask:'doc中所有的掩碼都被描述,對於'keyEquivalent:'也是如此,包括退格和刪除。至於更奇特的鑰匙 - 你可能根本不想使用它們,因爲你的用戶無論如何都找不到鑰匙;-) – cacau

0

你的問題稍微不清楚 -

如果您設置一個快捷可可將調用命令爲您和您的代碼將永遠不知道用戶是否使用鼠標或打等效鍵。

如果您想通過其他方式來調用相同的命令(關鍵在NSView等)。你會想要手動調用與菜單定義相同的方法。