2

オブジェクトを使用して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へのリンクを次に示します。

4

1 に答える 1

0

NSTextField の状態で [Refuses First Responder] チェックボックスをオンにする必要があると思います。

これで問題は解決します。

- (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];
}

よろしく、 ニーラム

于 2013-03-05T11:27:09.597 に答える