Re: changing NSTextView text colour
Re: changing NSTextView text colour
- Subject: Re: changing NSTextView text colour
- From: James Maxwell <email@hidden>
- Date: Sun, 6 Jun 2010 18:15:14 -0700
hmm... okay. I get what you're saying about range, and I did wonder about that, but it seems strange to be required to always set it by range, for each line. Shouldn't there just be a single, persistent setting -- a default, as it were?
I'll look at the typingAttributes, but this text is being set programmatically, not by the user. Don't know if that makes a difference... ("Typing" certainly sounds like user input to me.)
As I say, I would have expected the IB Attributes panel to be able to set it, but it's not working, for whatever reason.
J.
On 2010-06-06, at 5:29 PM, Ross Carter wrote:
> 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
James B Maxwell
Composer/Doctoral Student
School for the Contemporary Arts (SCA)
School for Interactive Arts + Technology (SIAT)
Simon Fraser University
email@hidden
email@hidden
_______________________________________________
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