cocoa - 将 NSMenu 命令传输到当前窗口?

标签 cocoa macos

这里是 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/

相关文章:

objective-c - Cocoa/OSX - 当标题栏被隐藏时,NSTextField 不响应单击以开始文本编辑

macos - 如何调整复选框标签的基线?

macos - 使用swift的临时文件路径

xcode - 奇怪的 NSOutlineView 崩溃

ios - in/dev/fsevents 的 0x3F 0xB3 字节是什么?

ruby - 在循环读取大文件时如何防止 RubyMotion 中的内存泄漏

objective-c - 在 Cocoa 中获取用户的默认电子邮件地址

java - 我的项目不想完成同步

objective-c - 在 cocoa 中阅读后如何关闭文件

macos - 在 macOS 的 Swift 5.x 中设置证书信任