2009-11-16 13 views
5

जब NSTextField (लेबल) बाइंडिंग के साथ नियंत्रक चयन के लिए बाध्य है, और मैंने एकाधिक मान मार्कर, कोई चयन मार्कर इत्यादि के लिए प्लेसहोल्डर मान निर्दिष्ट नहीं किए हैं, यह टेक्स्ट को भूरे रंग के रंग से खींचता है जो कि ठीक से दिखाई नहीं देता है अंधेरे पृष्ठभूमि।किसी प्लेसहोल्डर मार्कर को प्रदर्शित करते समय 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

यह ओएस एक्स संस्करण पर निर्भर करता है - मेरा मानना ​​है कि आप जिस व्यवहार को चाहते हैं उसे 10.7 में जोड़ा गया था। पिछले संस्करणों में प्लेसहोल्डर स्ट्रिंग गायब हो जाती है जब फ़ील्ड कीबोर्ड फोकस प्राप्त करता है (कोको टर्मिनोलॉजी में "कुंजी बन जाता है)। –

+1

मैं 10.8.3 का उपयोग कर रहा हूं और अभी भी इस समस्या को देख रहा हूं। जब मैं टेक्स्ट फ़ील्ड पर क्लिक करता हूं तो प्लेसहोल्डर गायब हो जाता है या यदि मैं इसे प्रोग्रामर के पहले प्रतिक्रियाकर्ता बना देता हूं। –

0

आप अपना खुद का "palceholder" बनाने का प्रयास कर सकते हैं। मेरा मतलब है कि आप अपने टेक्स्टफील्ड पर किसी भी लेबल पेटीमीटर के साथ एक लेबल दिखा सकते हैं।

संबंधित मुद्दे