当用户调用NSTextField的上下文菜单时,Cocoa会显示一个菜单,其中包含常用的标准项。我可以将自己的项目添加到该菜单中吗?如果是,那该怎么办?
顺便说一句,我使用Swift。感谢。
答案 0 :(得分:3)
您需要使用用于文本字段的字段编辑器进行干预。文本字段不直接处理其内容的编辑。他们使用文本视图(NSTextView
或子类的实例)来做到这一点。该文本视图称为字段编辑器。
文本视图可以有一个委托,该委托可以实现方法-textView:menu:forEvent:atIndex:
来自定义上下文菜单。问题是,当文本视图作为字段编辑器运行时,其委托始终是它代表的控件。因此,您不能将自己的任意对象(如某些窗口或视图控制器)设置为其委托。
因此,您必须使用NSTextField
的自定义子类才能有机会自定义上下文菜单。在您的子类中,实现该方法并自定义在返回之前传入的菜单(如果您愿意,还可以返回完全不同的菜单)。