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

2024-04-20

我有一个NSTextField显示时不使用边框和窗口背景颜色,但我希望在编辑时将其更改为具有默认边框和白色 BG 颜色。我知道我可以通过以下方式更改这些属性:

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

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

编辑: 实际上,当将操作设置为“编辑结束时发送”时,可以通过文本字段的更改操作来检测编辑结束,这样就解决了问题,但仍然如何检测开始编辑?


您可以设置delegate of NSTextField:

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
}

EDIT:

我认为你可以子类化NSTextField并覆盖becomeFirstResponderresignFirstResponder,那么你就知道NSTextField是否有焦点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编辑时更改 NSTextField 边框和 BG 颜色 的相关文章

随机推荐