2009-11-16 3 views
5

Когда NSTextField (Label) привязан к выбору контроллера с привязками, и я указал значения заполнитель для маркера множественных значений, No Selection Marker и т. Д., Он рисует текст серым цветом, который не отображается хорошо на темный фон.Как контролировать цвет текста 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

Я попытался установить привязку к заполнителю напрямую, но когда я нажимаю на кнопку te xt, то заполнитель исчезнет, ​​это нормально или есть способ обойти это, чтобы заставить местозаполнитель оставаться до тех пор, пока символ не будет напечатан. –

+0

Это зависит от версии ОС X. Я считаю, что поведение, которое вы хотите, было добавлено в 10.7. В более ранних версиях строка-заполнитель исчезает, когда поле получает фокус клавиатуры («становится ключевым» в терминологии Какао). –

+1

Я использую 10.8.3 и все еще вижу эту проблему. Заполнитель исчезает, как только я нажимаю на текстовое поле, или если я сделаю его первым ответчиком программным путем. –

0

вы можете попытаться создать свой собственный «держатель». Я имею в виду, что вы можете показать ярлык над текстовым полем с любыми текстовыми патаметрами, которые вы хотите.

Смежные вопросы