gpt4 book ai didi

cocoa - 基于 Cocoa 的 Mac OS X 应用程序面临国际化 MainMenu.xib 问题

转载 作者:行者123 更新时间:2023-12-03 17:59:27 25 4
gpt4 key购买 nike

我正在从事一个基于 Cocoa 的 Mac OS X 项目,并面临一个国际化 MainMenu.xib 的问题。

在菜单项中,所有标题都需要以编程方式国际化。除撤消和重做菜单项标题外,所有菜单项(如“剪切”、“复制”、“粘贴”)都可以使用 setTitle 国际化。除此之外,在项目表单的文本字段中输入任何内容后,撤消菜单项标题会动态更改为“撤消键入”。 “重做”也会发生同样的情况。

我可以使用设置其他菜单的标题和菜单项的标题,

[[[[NSApp mainMenu] itemAtIndex:1] submenu]setTitle:@"Edit_Test"] 

对于 MainMenu.xib“编辑”菜单,类似地,

[[[[[NSApp mainMenu] itemAtIndex:1] submenu]itemAtIndex:4]setTitle:@"Copy_Test"] 

对于位于“编辑”菜单下的 NSMenuItem“复制”。

但是如果我使用同一段代码,

  [[[[[NSApp mainMenu] itemAtIndex:1] submenu]itemAtIndex:0]setTitle:@"Undo_Test"] 

menuItem 标题仍保留为“Undo”

NSUndoManager 提供了 undoMenuItemTitle 和 redoMenuItemTitle 方法,但 NSUndoManager 不会向“Undo”和“Redo”菜单项发送 -setTitle: 消息。

那么我如何跟踪标题的动态变化并使“撤消键入”也国际化?

是否可以手动获取 MainMenu.xib 的第一响应者并从中获取 undomanager 对象?这样我就可以使用撤消菜单项解除第一响应程序中当前存在的撤消操作的绑定(bind),并手动执行撤消操作,或者是否可以仅以编程方式更改标题而不执行所有这些操作。

如果有人遇到过此问题并解决了该问题,请告诉我。

最佳答案

创建 NSUndoManager 的子类并覆盖 the undoMenuTitleForUndoActionName: methodthe redoMenuTitleForUndoActionName: method 。为需要撤消管理器的每个文档(或托管对象上下文或其他事物)创建此子类的实例。

关于cocoa - 基于 Cocoa 的 Mac OS X 应用程序面临国际化 MainMenu.xib 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8707861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com