在基于文档的应用程序中连接菜单项

时间:2011-02-03 22:52:33

标签: objective-c cocoa nsmenuitem

我已经就这个话题问了几个问题,并没有真正得到关于如何做到这一点的真实答案(它实际上收到了“Tumbleweed Badge”大声笑)。

我有一个基于文档的应用程序(意味着Menu.Xib与MyDocument.Xib是分开的)。

说我想添加一个'Bold'按钮,或者Check Spelling按钮(Menu.xib中列出的项目(在Format> Font等下)到MyDocument(主界面)。我无法弄清楚如何这样做。

任何帮助都将不胜感激(如果有效,我会立即给予答复,这已经让我困扰了几个星期了。)

我尝试将字体管理器添加到MyDocument.Xib并以这种方式连接,但Bold按钮仅启用,它不会禁用。另外,无法通过字体管理器激活拼写检查等。

必须有更好的方法来做到这一点。

Apple文档非常模糊。

1 个答案:

答案 0 :(得分:17)

这正是IB中First Responder对象的用途。它是连接操作的代理对象。发送给它的任何动作消息都将沿着响应者链传递给接受它们的第一个对象。对于基于文档的应用程序,响应者链包括当前文档。因此,要将菜单项连接到您的文档:

  1. 如果需要,将操作添加到First Responder。您可以从IB的检查员窗口执行此操作。
  2. 将操作连接到First Responder,就像它是普通对象一样。
  3. 在您的文档中实施操作方法。
  4. 如果您需要以编程方式向第一个响应者添加消息,请将对象的目标设置为nil