我确实使用setPlaceholderAttributedString:
的NSTextFieldCell
对象来设置自定义字体和颜色的占位符。这里是整个代码...NSTextField的单元格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的链接,您可以在这里看到区别。
你已经设置的帧大小为'NSZeroRect'? – trojanfoe 2013-03-05 10:20:29
将TextField的文本设置为零或空字符串@“”将导致显示占位符文本。 NSTextFieldCell实现了setPlaceholderString,而NSTextField又有一个嵌入的NSTextFieldCell。我使用[textField setStringValue:@“”]将NSTextField的内容设置为空。 – parilogic 2013-03-05 10:22:55
@trojanfoe是的,它通常是可见的,因为我确实使用自动布局约束。 – robertvojta 2013-03-05 10:27:14