在 ObjC 中禁用剪切和/或粘贴

Posted

技术标签:

【中文标题】在 ObjC 中禁用剪切和/或粘贴【英文标题】:Disable cut and/or paste in ObjC 【发布时间】:2011-07-07 22:33:51 【问题描述】:

我想在我的 ObjC 应用程序中禁用运行时菜单栏中的剪切和/或粘贴功能。我知道这在 ios 中是可能的 -(BOOL)canPerformAction:(SEL)aSelector withSender:(id)sender

MacOS 有什么类似的吗?

谢谢

【问题讨论】:

【参考方案1】:

有NSUserInterfaceValidations Protocol,一个用于验证项目的通用协议。您只需实现 validateUserInterfaceItem: 方法并返回 NO 即可禁用该操作。

- (BOOL)validateUserInterfaceItem:(id < NSValidatedUserInterfaceItem >)anItem 
    if([anItem action] == @selector(cut:) ||
       [anItem action] == @selector(copy:) ||
       [anItem action] == @selector(paste:)) return NO;
    return [self respondsToSelector:[anItem action]];

还有一个NSMenuValidation Protocol,它执行相同的功能但仅用于验证菜单项,而不是所有界面项。如果您不实施,系统将转而使用标准验证。

【讨论】:

请问,这段代码应该放在哪里?在应用程序委托中?我从来没有使用过这个协议,所以我不知道从哪里开始。我是否必须以某种方式将菜单项“连接”到它?谢谢 它们应该被放置在任何接受动作的地方。这通常是包含数据的控件,例如文本视图,但也可以是文档或窗口控制器。如果您打算始终禁用它们,则可以将目标更改为其他对象,这样您只需将方法添加到一个对象。 首先,感谢您的光临。第二:假设我希望剪切/粘贴始终以标准方式运行,但是当我的 NSImageView 是第一响应者时。我知道我可以使 NSImageView 根本不可编辑,但我需要让它可编辑并完全控制剪切/粘贴的状态(启用/禁用)。我已经尝试将该代码放在我的 NSImageView 的子类实现中,但它似乎不起作用......我错在哪里? 也许 NSImageView 实现了NSMenuValidation,覆盖了你的方法。但是,NSImageView 也有一个setAllowsCutCopyPaste: 方法。对于这种情况,您只需致电 [myImageView setAllowsCutCopyPaste:NO] 正如我之前所说,我知道这种方法,但这不是我想要的,因为 ti 禁用/启用剪切、复制和粘贴,但我需要保持复制启用.. . 我要生气了...

以上是关于在 ObjC 中禁用剪切和/或粘贴的主要内容,如果未能解决你的问题,请参考以下文章

jQuery如何将“禁用剪切和粘贴脚本”与单选按钮列表结合起来?

在 Python 中剪切和粘贴文件或目录 [重复]

js禁用右键菜单选中复制剪切粘贴

可以以编程方式使用新的WP7剪切和粘贴功能吗?

什么是“剪切和粘贴”证明技术?

input输入框禁止复制粘贴剪切自动完成