2014-10-06 116 views
0

我正在研究一個Cocoa應用程序,最終只有2個項目在主窗口菜單中。不包含在這些項目中的是「編輯」菜單項。是否可以在沒有「編輯」的情況下將「編輯」項目的所有功能添加到應用程序中?我正在談論所有的複製,粘貼,撤消等....我知道可以通過在窗口控制器中添加鍵盤監聽器來實現這一點,但是我想知道這是否可以以其他方式完成?是否有可能在沒有「編輯」菜單項的可可應用程序中具有「編輯」功能?

我想以不同的方式做這件事的原因是,我仍然想在本機關於窗口中使用這些命令。該窗口沒有控制器(我知道)可以添加偵聽器。如果任何人有關於如何做到這一點的替代想法,我都會聽。

回答

3

是的。編輯菜單項只是向「響應者鏈」發送任意「消息」。

[[NSApplication sharedApplication] sendAction:@selector(copy:) to:nil from:self]; 

如果查看界面生成器中的事件菜單項,可以看到正在發送的選擇器列表。

從文檔:

如果aTarget是nil,sharedApplication尋找一個對象,可以給消息,也就是說,一個實現方法匹配anAction對象響應。它從關鍵窗口的第一響應者開始。如果第一響應者不能響應,它會嘗試第一響應者的下一個響應者,並繼續跟隨下一響應者鏈接響應者鏈。如果密鑰窗口的響應者鏈中沒有任何對象可以處理消息,則sharedApplication會嘗試將消息發送到密鑰窗口的委託。

更多詳情請看這裏:

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html#//apple_ref/doc/uid/10000060i-CH3-SW2

+0

+1,但這個詞狡辯 「任意」。它們實際上是特定的消息(與任意相反),但也許你想表達它們是普通的。 – 2014-10-06 23:02:47

+0

完美!這正是我需要的。謝謝。 :) – bhawley 2014-10-06 23:20:47

相關問題