Objective c 设置DrawsBackground后需要更新/刷新显示

Objective c 设置DrawsBackground后需要更新/刷新显示,objective-c,cocoa,nstextfield,Objective C,Cocoa,Nstextfield,我正在以编程方式创建一个NSTextField,如下所示 NSTextField *textField = [[NSTextField alloc] init]; [textField setBezeled:NO]; [textField setEditable:NO]; [textField setSelectable:NO]; [textField setDrawsBackground:YES]; [textField setTextColor:[NSColor whiteColor]];

我正在以编程方式创建一个NSTextField,如下所示

NSTextField *textField  = [[NSTextField alloc] init];
[textField setBezeled:NO];
[textField setEditable:NO];
[textField setSelectable:NO];
[textField setDrawsBackground:YES];
[textField setTextColor:[NSColor whiteColor]];
[textField setBackgroundColor:[NSColor blackColor]];
稍后在另一种方法中,我想删除黑色背景色

所以我打电话

[textFieldReferenceOfAbove setDrawsBackground:NO];
但是黑色背景色不会消失。在cocoa中是否有方法在上述代码之后刷新

我试了下面所有的

[textFieldReferenceOfAbove setNeedsLayout:YES];
[textFieldReferenceOfAbove setNeedsDisplay:YES];
[textFieldReferenceOfAbove invalidateIntrinsicContentSize];

但是在我的情况下,这没有帮助-但是当我通过用户交互(不是编程)更改字体大小时,背景黑色消失了

你是如何获得引用的,textFieldReferenceOfAbove?您是否记录了它以查看它是否为零?我想我引用的是正确的-[textFieldReferenceOfAbove setBackgroundColor:[NSColor redColor]];作品-背景颜色变为红色!你的代码对我来说很好,只需调用setDrawsBackground:不,我尝试了一个新项目,它可以工作,但在我正在工作的项目中不工作:(那么我唯一能建议的就是清理项目,看看是否有帮助。你也可以尝试关闭Xcode,然后重新打开。