Interesting problem.

I'm afraid one of the easier solutions is to use a NSTextView instead
of a NSTextField. When you set the selectedAttributes of the field
editor, I believe it will be forgotten as the field editor will try to
mimick the way the text look like when not edited, (Sure the doc says
these attributes are OK but they are for the NSTextView that will be
edited AFAIK).

Allowing rich text, subclassing NSTextField and add some methods from
NSTextView did not work so far. No obvious private API for this in the
AppKit.

On Tue, Apr 10, 2012 at 7:51 AM, Michael Crawford
<[email protected]> wrote:
> I've tried two different approaches.  The first thing I tried was to make may 
> app-delegate the delegate for my window and then implement 
> -windowWillReturnFieldEditor:toObject:.
>
> - (void)awakeFromNib
> {
>    _fieldEditor = [NSTextView new];
>    [_fieldEditor setFieldEditor:YES];
>
>    NSDictionary* attributes = [NSDictionary dictionaryWithObjectsAndKeys:
>                                [NSColor redColor], 
> NSBackgroundColorAttributeName, /* something obvious so I can see it */
>                                [NSColor yellowColor], 
> NSForegroundColorAttributeName,
>                                nil];
>    [_fieldEditor setSelectedTextAttributes:attributes];
> }
>
> - (id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)client
> {
>    if ( [client isKindOfClass:[NSTextField class]] )
>    {
>        return _fieldEditor;
>    }
>
>    return nil;
> }
>
> Next, I tried something I found in a blog via Google at 
> http://www.ff00aa.com/fr/archives/2009/02/28/9969-changing-the-selected-text-s-color-for-an-nstextfield/.
>
> - (void)viewDidMoveToWindow:(NSWindow *)window
> {
>    if ( window != nil )
>    {
>        NSDictionary* attributes = [NSDictionary dictionaryWithObjectsAndKeys:
>                                    [NSColor redColor], 
> NSBackgroundColorAttributeName,
>                                    [NSColor yellowColor], 
> NSForegroundColorAttributeName,
>                                    nil];
>
>        // object-shadow text-field
>        NSTextView *fieldEditor = (NSTextView *)[window fieldEditor:YES 
> forObject:_shadowTextField];
>        [fieldEditor setSelectedTextAttributes:attributes];
>
>        // vignette text-field
>        fieldEditor = (NSTextView *)[window fieldEditor:YES 
> forObject:_vignetteTextField];
>        [fieldEditor setSelectedTextAttributes:attributes];
>
>        // opacity text-field
>        fieldEditor = (NSTextView *)[window fieldEditor:YES 
> forObject:_opacityTextField];
>        [fieldEditor setSelectedTextAttributes:attributes];
>    }
> }
>
> End result: In both cases I get the default white on cyan or whatever color 
> you call it.  Anyone have a technique that works or some experience with this 
> type of modification?
>
> -Michael
> _______________________________________________
>
> Cocoa-dev mailing list ([email protected])
>
> 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:
> https://lists.apple.com/mailman/options/cocoa-dev/dev.iceberg%40gmail.com
>
> This email sent to [email protected]

_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to