2013-05-11 44 views
4

如何将focusRing颜色从蓝色更改为红色。更改NSTextField的对焦颜色,NSTextView

(这个问题是在延续与Generic validation on input,在这里,而不是设置一个默认的蓝色光标,我需要红色)

默认看起来是这样的:

enter image description here

我需要的东西像这样(注:显示的图像并不完美,如框中绘制):

enter image description here

我试图从

  1. http://www.cocoabuilder.com/archive/cocoa/241956-how-to-change-focus-ring-color.html
  2. Cocoa focus ring color animation
  3. http://toomasvahter.wordpress.com/2010/06/13/drawing-focus-rings-in-nscell-and-nsview/

,但没有成功,几件事情。

需要您的帮助。

+0

聚焦环颜色是由用户来设定。 – 2013-05-11 15:01:07

回答

1

子类NSTextview和插入下面的代码

-(void)mouseEntered:(NSEvent *)theEvent{ 

    CALayer *lay = [self layer]; 
    CGColorRef myColor=CGColorCreateGenericRGB(0, 0, 1, 1); 
    [lay setBorderColor:myColor]; 
    [lay setBorderWidth:4]; 
    //[self setWantsLayer:YES]; 
    [self setLayer:lay]; 
    [self makeBackingLayer]; 
    //CGColorRelease(myColor); 
} 

-(void)mouseExited:(NSEvent *)theEvent{ 

    CALayer *lay = [self layer]; 
    CGColorRef myColor=CGColorCreateGenericRGB(0, 0, 1, 1); 
    [lay setBorderColor:myColor]; 
    [lay setBorderWidth:0]; 
    //[self setWantsLayer:YES]; 
    [self setLayer:lay]; 
    [self makeBackingLayer]; 
    //CGColorRelease(myColor); 
} 



-(void)updateTrackingAreas{ 
    [super updateTrackingAreas]; 
    if (trackingArea){ 
     [self removeTrackingArea:trackingArea]; 
     [trackingArea release]; 
    } 

    NSTrackingAreaOptions options = NSTrackingInVisibleRect | NSTrackingMouseEnteredAndExited | NSTrackingActiveInKeyWindow; 
    trackingArea = [[NSTrackingArea alloc] initWithRect:NSZeroRect options:options owner:self userInfo:nil]; 
    [self addTrackingArea:trackingArea]; 

}