On Jun 6, 2010, at 1:21 PM, James Maxwell wrote:

> I have a NSTextView that's displaying MIDI info from my app's current MIDI 
> input device. I show this info in a couple of places - one is in a "MIDI 
> Setup" type window, and the other is in an Inspector window. I want the 
> Inspector window to show this data in light grey text against a dark 
> background (whereas the MIDI Setup window shows it in black on white). 
> I'm doing this from my MIDI controller class, which is instantiated as a nib 
> in IB. The controller has an IBOutlet to the desired text view. In the 
> controller's init I tried just setting the foreground colour of my text 
> view's textStorage, but that didn't work -- it still displays as black text. 
> It does work to do this:
> 
> [[mainWindowMIDIMonitor textStorage] setForegroundColor:[NSColor 
> lightGrayColor]];
> [mainWindowMIDIMonitor performSelectorOnMainThread:@selector(setString:) 
> withObject:monitorInfo waitUntilDone:NO];
> 
> But it doesn't display the first input in light grey. It starts out as black, 
> than changes after the first entry... go figure...
> Is there no way to just permanently set the text colour to light grey once? 
> Do I have to have the controller hold a reference to the text view, rather 
> than just using an outlet?

This might help; forgive me if it doesn't address your situation. In an 
NSTextStorage object, text attributes are values that apply to some range of 
text in the object. If the object has no text, then setting attributes is 
meaningless. If a textStorage length is 0, and you set a foreground color 
attribute, and subsequently add some text, the text does not necessarily show 
up with that foreground color.

When plain text without attributes is added to a textStorage object--as, for 
example, with input from the keyboard--the NSTextView uses its typingAttributes 
dictionary to apply attributes to the new text. So, if you've got a new 
NSTextView whose NSTextStorage length is 0, and you are going to add some plain 
text to it, you must first set the typingAttributes of the NSTextView to the 
desired attributes.

-setForegroundColor: is one of the scriptability methods of NSTextStorage. 
Those methods are not recommended for use in non-scripting situations.
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to