以编程方式设置 NSTextField 操作

Programmatically set NSTextField action

我在接收来自 NSTextField 的操作时遇到问题。在我的应用程序中,我有一些 NSTextFields 通过界面生成器创建,而其他的则以编程方式创建。

似乎默认情况下,IB 文本字段发送结束编辑操作。但是,如果我使用 init(frame:) 初始值设定项创建一个 NSTextField,它只会在输入时发送一个动作。

我意识到我可以 "solve" 通过子类化和重写 controlTextDidEndEditing 函数然后在那里发送一个动作,但是当我调用 super.controlTextDidEndEditing 它也发送一个动作。所以这个动作然后发送了两次......我真的只是希望通过代码创建的文本字段使用选项 "Sent on end editing"。

没有办法通过代码更改此界面生成器设置吗?

您可以在代码中设置。它实际上是文本字段单元格上的 属性:

// Same as IB's “Sent On End Editing”.
myTextField.cell?.sendsActionOnEndEditing = true

// Same as IB's “Send on Enter Only”.
myTextField.cell?.sendsActionOnEndEditing = false