gpt4 book ai didi

objective-c - 更改 NSTextField、NSTextView 的 FocusRing 颜色

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:50 29 4
gpt4 key购买 nike

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

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

默认是这样的:

enter image description here

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

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/

但没有成功。

需要您的帮助。

最佳答案

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

}

关于objective-c - 更改 NSTextField、NSTextView 的 FocusRing 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16498170/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com