【问题标题】:Strange Behavior With NSTextField and an NSAttributedString PlaceholderNSTextField 和 NSAttributedString 占位符的奇怪行为
【发布时间】:2013-04-16 19:58:25
【问题描述】:

我正在向 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 的不良行为还是我遗漏了什么?

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

【问题讨论】:

  • 这似乎只是一个错误。是的!
  • 您是否找到了解决方案或变通方法?
  • 不行,你要么忍受占位符的默认颜色,要么自己手写。
  • 那是可悲的。谢谢你的时间:)

标签: objective-c cocoa appkit


【解决方案1】:

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

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

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

还有一件事。我发现它适用于 10.9 SDK。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-09
    • 2011-08-15
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多