2014-09-24 49 views
0

當用戶調用NSTextField的上下文菜單時,Cocoa會顯示一個菜單,其中包含常用的標準項目。我可以將自己的項目添加到該菜單中嗎?如果是這樣,怎麼辦?順便說一下,我使用的是Swift。謝謝。如何將自定義項目添加到Cocoa中的NSTextField上下文菜單中?

+0

你的意思只是在你自己的應用程序內?或者是否想要將上下文菜單項添加到所有應用程序的文本字段? – 2014-09-24 23:05:58

+0

在我自己的一個特定領域的應用程序。 – skytag 2014-09-25 00:51:21

回答

3

您需要介入用於文本字段的字段編輯器。文本字段不直接處理其內容的編輯。他們使用文本視圖(NSTextView或子類的實例)來做到這一點。該文本視圖被稱爲字段編輯器。

文本視圖可以有一個委託,該委託可以實現方法-textView:menu:forEvent:atIndex:來自定義上下文菜單。問題是,當文本視圖作爲字段編輯器運行時,其代表始終是它代表的控件。所以,你不能將你自己的任意對象(如某個窗口或視圖控制器)設置爲它的委託。

因此,您必須使用NSTextField的自定義子類纔能有機會自定義上下文菜單。在您的子類中,實現該方法並在返回之前自定義傳入的菜單(如果您願意,還可以返回完全不同的菜單)。

相關問題