编辑时更改 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" 时,可以通过文本字段的更改操作检测到编辑结束,这样就解决了,但我如何检测开始编辑?
可以设置NSTextField
的delegate
:
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
并覆盖 becomeFirstResponder
和 resignFirstResponder
,然后你就知道 NSTextField
是否有焦点。
我有一个 NSTextField
在显示时不使用边框和 window 背景颜色,但我希望它在编辑时更改为具有默认边框和白色 BG 颜色。我知道我可以更改这些属性:
nameTextField.bezeled = true
nameTextField.backgroundColor = NSColor.textBackgroundColor()
我不知道如何在开始编辑文本字段和结束编辑时收到通知。似乎没有为此采取任何行动。有没有其他方法可以实现这种行为?
编辑: 实际上,当将 Action 设置为 "Send on End Editing" 时,可以通过文本字段的更改操作检测到编辑结束,这样就解决了,但我如何检测开始编辑?
可以设置NSTextField
的delegate
:
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
并覆盖 becomeFirstResponder
和 resignFirstResponder
,然后你就知道 NSTextField
是否有焦点。