2009-11-16 3 views
5

NSTextField(Label)がバインディング付きのコントローラー選択にバインドされていて、複数値マーカー、選択マーカーなしなどのプレースホルダー値を指定した場合、灰色のテキストが描画されます。暗い背景。プレースホルダマーカーを表示しているときにNSTextFieldのテキストの色を制御する方法はありますか?

プレースホルダテキストを表示するために使用するテキストの色を変更する方法はありますか?

答えて

15

このように、あなたがしたい色を指定する属性付きの文字列を使用します。

NSDictionary *blueDict = [NSDictionary dictionaryWithObject: [NSColor blueColor] 
         forKey: NSForegroundColorAttributeName]; 
NSAttributedString *blueString = [[[NSAttributedString alloc] initWithString: @"test" 
           attributes: blueDict] autorelease]; 

を次にあなたが直接プレースホルダー属性付きの文字列を設定することができ、次のいずれか

[[field cell] setPlaceholderAttributedString: blueString]; 

または結合を通じてそれを行うと、ために例:

[field2 bind: @"value" toObject: [NSUserDefaults standardUserDefaults] 
     withKeyPath: @"foo" 
     options: [NSDictionary dictionaryWithObject: blueString forKey: NSNullPlaceholderBindingOption]]; 
+0

プレースホルダの属性文字列を直接設定してみましたが、 xtフィールドを入力すると、プレースホルダが消えます。これは普通です。または、文字が入力されるまでプレースホルダを保持する方法があります。 –

+0

これはOS Xのバージョンに依存します - あなたが望む動作が10.7で追加されたと思います。以前のバージョンでは、フィールドがキーボードフォーカスを受け取るとプレースホルダ文字列が消えます(Cocoaの用語では「キーになる」)。 –

+1

私は10.8.3を使用していますが、まだこの問題があります。プレースホルダは、テキストフィールドをクリックするか、プログラマチックに最初のレスポンダにすると消えます。 –

0

あなた自身の "palceholder"を作ることができます。私はあなたが望むテキストパターンであなたのテキストフィールド上にラベルを表示できることを意味します。

関連する問題