gpt4 book ai didi

objective-c - NSTextField 的单元格 setPlaceholderAttributedString - 获得焦点时占位符不可见

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

我确实使用 NSTextFieldCell 对象的 setPlaceholderAttributedString: 来设置具有自定义字体和颜色的占位符。这是完整的代码...

_statusMessageField = [[NSTextField alloc] initWithFrame:NSZeroRect];
[_statusMessageField setBordered:NO];
[_statusMessageField setBezeled:NO];
[_statusMessageField setFocusRingType:NSFocusRingTypeNone];
[_statusMessageField setDrawsBackground:NO];
[_statusMessageField setTextColor:TM_NS_COLOR(35, 37, 46)];
[_statusMessageField setFont:[NSFont systemFontOfSize:13.0]];

NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:@"What's up?"];
NSRange range = NSMakeRange( 0, [placeholder length] );
[placeholder addAttribute:NSFontAttributeName value:[NSFont systemFontOfSize:13.0] range:range];
[placeholder addAttribute:NSForegroundColorAttributeName value:TM_NS_COLORA( 92, 97, 114, 0.7 ) range:range];
[placeholder fixAttributesInRange:range];
[_statusMessageField.cell setPlaceholderAttributedString:placeholder];
_statusMessageField.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:_statusMessageField];

...这让我发疯,因为...

  • 仅当 NSTextField 没有焦点时占位符才可见,
  • 当我点击NSTextField时,插入符号可见,尚未输入任何内容,但占位符消失,这是错误的,应该在至少输入一个字符之前可见,

...当我将 setPlaceholderAttributedString: 替换为 setPlaceholderString: (无归属)时,占位符行为正确 - 当 NSTextField 没有时可见焦点或已焦点但尚未输入任何内容。

知道可能出了什么问题吗?

这是图像的链接 http://d.pr/i/WoC9您可以在其中看到差异。

最佳答案

我认为您需要在 NSTextField 状态下选中“拒绝第一响应者”复选框。

这将解决问题。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
[_statusMessageField setBordered:NO];
[_statusMessageField setBezeled:NO];
[_statusMessageField setFocusRingType:NSFocusRingTypeNone];
[_statusMessageField setDrawsBackground:NO];
[_statusMessageField setTextColor:[NSColor blueColor]];
[_statusMessageField setFont:[NSFont systemFontOfSize:13.0]];

NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:@"What's up?"];
NSRange range = NSMakeRange( 0, [placeholder length] );
[placeholder addAttribute:NSFontAttributeName value:[NSFont systemFontOfSize:13.0] range:range];
[placeholder addAttribute:NSForegroundColorAttributeName value:[NSColor greenColor] range:range];
[placeholder fixAttributesInRange:range];
[_statusMessageField.cell setPlaceholderAttributedString:placeholder];
_statusMessageField.translatesAutoresizingMaskIntoConstraints = NO;
[_statusMessageField setRefusesFirstResponder:NO];


}

- (void)awakeFromNib {

[_statusMessageField setRefusesFirstResponder:YES];
}

问候,尼拉姆

关于objective-c - NSTextField 的单元格 setPlaceholderAttributedString - 获得焦点时占位符不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15221205/

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