使用NSTextField和NSAttributedString占位符的奇怪行为

时间:2013-04-16 19:58:26

标签: objective-c cocoa appkit

我正在向NSTextField添加占位符:

NSTextField *textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0.0, 0.0, 100.0, 30.0)];
NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"Hello, World"];
[textField.cell setPlaceholderAttributedString:string];

这很有效,但是当我对文本字段进行聚焦时,即使stringValue为空,占位符也会消失。

如果我仅使用setPlaceholderString:方法设置占位符,占位符将保留,直到stringValue不为空。

这只是AppKit上的不良行为还是我遗漏了什么?

以上是一个简单的例子。我正在使用属性字符串,因此我可以设置字体和颜色属性。

1 个答案:

答案 0 :(得分:0)

您是否可能为控件指定了绑定?如果是,则占位符属性字符串将被绑定的空占位符覆盖。

然后应该可以以编程方式绑定控件并将属性字符串指定为null占位符的选项,如下所示:

[textField bind:@"value" toObject:self withKeyPath:@"textFieldValue" options: @{NSNullPlaceholderBindingOption:string}];

还有一件事。我发现它可以在10.9 SDK中运行。