如何在NSTextField(Cocoa)中使用右键单击禁用上下文菜单?

3

我正在开发一款Cocoa应用程序,其中包含可编辑文本字段。这些文本字段需要接受值,但不需要进行拼写检查或使用默认上下文菜单中提供的其他选项。据我所知,删除右键/ opt + 单击上下文菜单最简单的方法是覆盖以下函数:

rightMouseDown:(NSEvent *) 

我已经在自定义的NSTextfield类中完成了这个操作。这个修复程序阻止了用户在文本框启用并未被选中时右键单击,但是一旦用户双击/输入文本框进行编辑,就会恢复默认的右键单击功能。

这是因为第一响应者在尝试编辑字段时切换到继承链中的一个类吗?这种方法是禁用此NSTextField的所有上下文菜单功能的正确方式吗?

谢谢!

1个回答

6
当文本字段处于编辑状态时,实际的第一响应者是“字段编辑器”,这是由窗口提供的一个NSTextView。字段编辑器始终将其代表的控件用作其委托。因此,为了影响其上下文菜单的行为,您需要使用NSTextField的自定义子类。 (我猜您已经重写了-rightMouseDown:。)然后,实现文本视图委托方法-textView:menu:forEvent:atIndex:并返回nil(即没有菜单)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接