cocoa - NSToolbar 重做和撤消自动 - 启用 NSToolbarItem

标签 cocoa nsundomanager nstoolbar nstoolbaritem

在我的基于文档的应用程序中,我使用 NSUndoManager 实现了重做和撤消行为.

我想启用或禁用撤消/重做 NSToolbarItems自动(如在默认菜单中),基于canRedocanUndo (我的 NSToolbarItems 不是基于图像的,因此 - (BOOL)validateToolbarItem:(NSToolbarItem *)theItem 不会被调用)

1) 我尝试将启用值绑定(bind)到 self(My WC).document.undoManager.canUndo / self(My WC).document.undoManager.canRedo

不起作用,因为 canUndo 和 canRedo 不是基于变量的,而只是方法

2) 我确实向我的 WC canUndo 和 canRedo 添加了两个属性,我在 name:NSUndoManagerDidUndoChangeNotification 上修改了它们。和name:NSUndoManagerDidRedoChangeNotification但当我只是向 NSUndoManager 添加操作时,它们不会被调用,因此我必须执行第一个重做或撤消操作,以获得所需的行为

最佳答案

key 还注册了

NSUndoManagerCheckpointNotification“撤消管理器打开或关闭新的撤消组”

因为当操作添加到撤消管理器时会调用此函数

关于cocoa - NSToolbar 重做和撤消自动 - 启用 NSToolbarItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19716325/

相关文章:

objective-c - GData Api 的 Xcode-4 Cocoa 应用程序中出现编译器错误?

ios - 显式设置 NSUndoManager 的重做调用

nsundomanager - 如何避免 NSUndoManager 中的撤消组为空?

ios - "[NSBigMutableString substringWithRange:]: Range {0, 10} out of bounds; string length 9"撤消错误

objective-c - 第二个工具栏,如 NSScrollView 下的邮件 + 工具栏

macos - 统一 NSToolBar/Titlebar 与图标和标签?

python - 为什么 PyObjC 文档如此糟糕?

objective-c - 在模态 NSWindow 中带有 View 的 NSMenu

objective-c - 从工具栏项中删除焦点

objective-c - NSWindow 可恢复并不总是有效