在NSTextField中覆盖NSButton的等效键

时间:2012-11-14 04:59:37

标签: cocoa nstextfield nsbutton key-events

我有一个带有两个NSButton和一个NSTextField的窗口,还有几个视图和几个其他控件。我将右箭头键和左箭头键分配给两个NSButton中的每一个。这两个按钮响应左右箭头键。但是,当在NSTextField中时,我希望箭头键按照文本字段中的正常操作执行,而不是触发NSButton。我已经尝试阅读Cocoa Key Handling文档和关键事件的其他问题,但我找不到尝试更改一个控件中的键等效行为的示例。我尝试了继承NSTextField,但无法捕获箭头键。如何实施?

2 个答案:

答案 0 :(得分:1)

您可以覆盖becomeFirstResponder:并在您的实现中调用setKeyEquivalent:。如果要在按钮失去第一响应者状态时删除等效键,请覆盖resignFirstResponder:。

在您希望影响按钮等效的第一响应者状态的控件中执行此操作。例如,如果您将视图作为容器并且它可以成为第一响应者,则您将覆盖-becomeFirstResponder :(调用super)然后在那里管理按钮的等效项。如果您还不了解这些主题,那么您需要做很多先决条件阅读,因为这里无法做出简单的答案。

答案 1 :(得分:0)

您可以继承/success并覆盖NSButton,如下所示:

performKeyEquivalent:

如果第一个响应者是文本字段/视图,这实际上会禁用等效键。