gpt4 book ai didi

objective-c - 更改事件和非事件 NSTextField 的文本颜色

转载 作者:行者123 更新时间:2023-12-03 16:29:15 25 4
gpt4 key购买 nike

当 NSTextField 变为事件状态时,我想将文本颜色更改为“红色”。所有非事件文本字段都需要有“黑色”文本。

使用becomeFirstResponder方法,我可以将文本颜色更改为“红色”。但是,当文本字段失去焦点时,文本颜色仍保持“红色”。一旦它是非事件的 NSTextField,我需要将文本颜色更改回“黑色”。我尝试了 resignFirstResponder 方法,但它不会将文本颜色更改回“黑色”。

这是我的代码:

#import <Foundation/Foundation.h>

@interface MyTextField : NSTextField {
}

@end

#import "MyTextField.h"

@implementation MyTextField

- (BOOL)becomeFirstResponder {
if (![super becomeFirstResponder]) {
return NO;
} else {
[self setTextColor:[NSColor redColor]];
return YES;
}
}

- (BOOL)resignFirstResponder {
if (![super resignFirstResponder]) {
return NO;
} else {
[self setTextColor:[NSColor blackColor]];
return YES;
}
}

@end

最佳答案

我认为问题在于,当文本字段成为第一响应者时,字段编辑器正在采用颜色属性,但当文本字段退出时,它会替换它。您很可能希望直接更改字段编辑器上的属性。

您可以通过在窗口的委托(delegate)中替换您自己的字段编辑器来完成此操作,如下所示:

- (id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)client {

if ([client isKindOfClass:[MyTextField class]]) {

static NSTextView *fieldEditor;

if (nil == fieldEditor) {
fieldEditor = [[NSTextView alloc] init];
[fieldEditor setFieldEditor:YES];
}

[fieldEditor setDelegate:client];
[fieldEditor setTextColor:[NSColor redColor]];

return fieldEditor;

}
else return nil;
}

关于objective-c - 更改事件和非事件 NSTextField 的文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9155089/

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