【发布时间】:2021-04-05 04:40:28
【问题描述】:
我有一个NSTextField,它的背景颜色设置为透明。
当我按下回车键时,文本字段进入编辑模式并开始将文件重命名为Xcode。
这里我想把背景颜色改成白色。目前,我正在更改 controlTextDidBeginEditing(_ obj: Notification) 中的背景颜色,这是在文本字段接收到文本更改后调用的。
但是,我正在寻找一种可以在按下回车键后立即更改背景颜色的方法。
这是我当前的代码:
private class TextField: NSTextField, NSTextFieldDelegate {
init() {
super.init(frame: .zero)
delegate = self
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
public func controlTextDidBeginEditing(_ obj: Notification) {
let textField = obj.object as! NSTextField
textField.backgroundColor = NSColor.textBackgroundColor
}
public func controlTextDidEndEditing(_ obj: Notification) {
let textField = obj.object as! NSTextField
textField.backgroundColor = NSColor.clear
}
}
谢谢。
【问题讨论】:
-
不要问
controlTextDidBeginEditing(_:)能为你做什么。询问您可以使用func doCommand(by aSelector: Selector!, command infoDictionary: [AnyHashable : Any]!)做什么。 -
谢谢 El,我试过这个方法,发现当文本字段结束编辑时它被调用(通过第二次按返回键)。
-
恐怕我没听懂你说的。我只理解语法正确的英语句子。
-
不用担心,谢谢:)。
-
与问题无关,但您可以覆盖
textDidBeginEditing(_:)和textDidEndEditing(_:),而不是让文本字段成为自己的代表。
标签: swift macos nstextfield