gpt4 book ai didi

objective-c - 为什么 NSTextField 不重新绘制焦点字段的背景?

转载 作者:行者123 更新时间:2023-12-02 05:19:25 24 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我有两个 NSTExtField s 代表用户名和密码。当我得到不正确的用户名/密码组合时,我在包含这两个字段的 View 的 Controller 中设置了一个实例变量。然后,当实例变量发生变化时,我使用键值观察来运行以下方法:

- (void)handleCredentialsValidityToggle {
if ([self areCredentialsValid]) {
[passwordField setBackgroundColor:[NSColor colorWithCalibratedRed:1.0 green:1.0 blue:1.0 alpha:1.0]];
[usernameField setBackgroundColor:[NSColor colorWithCalibratedRed:1.0 green:1.0 blue:1.0 alpha:1.0]];
} else {
[passwordField setBackgroundColor:[NSColor colorWithCalibratedRed:1.0
green:1.0
blue:0.35
alpha:1.0]];
[usernameField setBackgroundColor:[NSColor colorWithCalibratedRed:1.0
green:1.0
blue:0.35
alpha:1.0]];
}
}

只要字段未处于事件状态,它就可以正常工作。换句话说,如果我修改其中一个字段,将光标放在焦点内,并尝试进行身份验证(通过单击菜单项),则具有焦点的字段不会更新为新的背景颜色,而没有焦点的字段。

为了看看我是否可以强制更新,我在方法的末尾添加了以下几行:

[passwordField drawCell:[passwordField cell]];
[usernameField drawCell:[usernameField cell]];

仍然没有运气。任何人都知道是什么原因造成的?提前致谢!

最佳答案

我的猜测是它正在您的自定义背景颜色之上绘制编辑框。您可以尝试子类化 NSTextFieldCell 并覆盖 editWithFrame:inView:editor:delegate:event:
(当然还要确保您的单元格是 setDrawsBackground:YES。)

关于objective-c - 为什么 NSTextField 不重新绘制焦点字段的背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5967715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com