Re: changing NSTextView text colour
Re: changing NSTextView text colour
- Subject: Re: changing NSTextView text colour
- From: Ross Carter <email@hidden>
- Date: Sun, 06 Jun 2010 20:29:16 -0400
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 (email@hidden)
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:
This email sent to email@hidden