4

如何将 focusRing 颜色从蓝色更改为红色。

(这个问题与Generic validation on input相续,这里我不需要设置默认的蓝色焦点,而是需要红色焦点。)

默认如下所示:

在此处输入图像描述

我需要这样的东西(注意:显示的图像并不像在 Box 内绘制的那样完美):

在此处输入图像描述

我尝试了几件事

  1. http://www.cocoabuilder.com/archive/cocoa/241956-how-to-change-focus-ring-color.html
  2. 可可对焦环彩色动画
  3. http://toomasvahter.wordpress.com/2010/06/13/drawing-focus-rings-in-nscell-and-nsview/

但没有成功。

需要你的帮助。

4

1 回答 1

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];

}  
于 2013-05-21T04:43:43.160 回答