オブジェクトを使用してsetPlaceholderAttributedString:
、NSTextFieldCell
カスタムのフォントと色でプレースホルダーを設定します。ここにコード全体があります...
_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
、キャレットが表示され、まだ何も入力されていませんが、プレースホルダーが消えます。これは間違っています。少なくとも 1 文字が入力されるまで表示されるはずです。
... (属性なし) に置き換えるsetPlaceholderAttributedString:
とsetPlaceholderString:
、プレースホルダーは正しく動作します -NSTextField
フォーカスがない場合、またはフォーカスがあり、まだ何も入力されていない場合に表示されます。
何が間違っている可能性がありますか?
違いを確認できる画像http://d.pr/i/WoC9へのリンクを次に示します。