gpt4 book ai didi

objective-c - NSTextView 占位符文本仅在选择时可见

转载 作者:行者123 更新时间:2023-12-03 17:02:08 25 4
gpt4 key购买 nike

我目前遇到了类似 SO question 中描述的问题(当前没有接受的答案),因为除非选择文本字段,否则我的文本字段的占位符文本不可见。

我已经对 NSTextField 进行了子类化(代码如下):

@interface CustomTextField : NSTextField

@property (nonatomic, strong) IBInspectable NSImage *backgroundImage;

@end

@implementation CustomTextField

- (void)awakeFromNib
{
[self setDrawsBackground:NO];
}

- (void)drawRect:(NSRect)rect
{
NSImage *backgroundImage = self.backgroundImage;

[super drawRect:rect];

[self lockFocus];

[backgroundImage drawInRect:rect fromRect:rect operation:NSCompositeSourceOver fraction:1.0];
[self unlockFocus];
}

@end

我已在 Interface Builder 中将文本字段的类设置为 CustomTextField,并设置占位符文本,如下所示:

enter image description here

如下面的屏幕截图所示,仅当选择文本字段时,占位符文本才可见...

文本字段一:

enter image description here

文本字段二: enter image description here

有谁知道如何使占位符文本可见,无论用户是否选择它?谢谢!

最佳答案

您正在父类(super class)绘制其内容后绘制背景图像。因此,您可能正在绘制父类(super class)绘制的任何内容,并将其替换。

在调用 super 之前,您应该先绘制背景图像。另外,您不应在 -drawRect: 中锁定(或解锁)焦点。框架已经为您完成了这些工作。

当您的文本字段获得焦点时,占位符出现的原因是您实际上看到的是字段编辑器,而不是此时的文本字段。字段编辑器是 NSTextView(“ View ”,而不是“字段”)的一个实例,它插入到文本字段顶部的 View 层次结构中以处理文本编辑职责。因此,当文本字段获得焦点时,您的自定义类的绘制就无关紧要了。

关于objective-c - NSTextView 占位符文本仅在选择时可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31296919/

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