编辑时更改 NSTextField 边框和 BG 颜色

Change NSTextField border and BG color while editing

我有一个 NSTextField 在显示时不使用边框和 window 背景颜色,但我希望它在编辑时更改为具有默认边框和白色 BG 颜色。我知道我可以更改这些属性:

nameTextField.bezeled = true
nameTextField.backgroundColor = NSColor.textBackgroundColor()

我不知道如何在开始编辑文本字段和结束编辑时收到通知。似乎没有为此采取任何行动。有没有其他方法可以实现这种行为?

编辑: 实际上,当将 Action 设置为 "Send on End Editing" 时,可以通过文本字段的更改操作检测到编辑结束,这样就解决了,但我如何检测开始编辑?

可以设置NSTextFielddelegate:

nameTextField.delegate = self

那么你可以设置不同的状态:

func control(control: NSControl, textShouldBeginEditing fieldEditor: NSText) -> Bool {
    nameTextField.bezeled = true
    nameTextField.backgroundColor = NSColor.textBackgroundColor()

    return true
}
func control(control: NSControl, textShouldEndEditing fieldEditor: NSText) -> Bool {
    nameTextField.bezeled = false
    nameTextField.backgroundColor = NSColor.windowBackgroundColor()

    return true
}

编辑:

我想你可以继承 NSTextField 并覆盖 becomeFirstResponderresignFirstResponder,然后你就知道 NSTextField 是否有焦点。