这里是 OS X 开发新手,但对 iOS 相当有经验。
我缺少一些有关顶级 NSMenu 与应用程序交互方式的基本信息。我希望"file"->“保存”命令转到当前窗口。到目前为止,我只能在应用程序委托(delegate)中接收 NSMenu 操作。我是否应该跟踪那里的事件窗口并调用应用程序委托(delegate)中的方法?
最佳答案
首先,听起来您需要 read up关于 Mac 菜单处理,因为为了正确处理菜单,您需要了解很多事情。
为了回答您的具体问题,如果菜单项的目标为 nil
,例如 Save
菜单项,则菜单处理系统将沿着响应者链向上走,从当前事件的控件或 View (第一响应者)开始,查找实现该菜单项的操作选择器的对象。
如果你不明白响应者链是如何工作的,你应该read about that too ,因为这是理解 Mac 应用程序工作原理的基础。
如果您希望窗口 Controller 在其窗口为主窗口时处理 -save:
操作,那么您所需要做的就是实现 -save:
窗口 Controller 中的操作。由于窗口 Controller 位于应用程序委托(delegate)之前的响应者链中,因此将使用其方法的实现。
关于cocoa - 将 NSMenu 命令传输到当前窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6820722/