gpt4 book ai didi

objective-c - NSTextField 光标仅在第二次鼠标输入时更改

转载 作者:行者123 更新时间:2023-12-03 17:11:32 26 4
gpt4 key购买 nike

从昨天开始,我就试图让 NSTextField 表现得像超文本。我几乎已经达到了我的目标,但我仍然有一个奇怪的错误。我将 NSTextField 子类化以覆盖 mouseEntered: 和 mouseExited:。在这些方法中,我在 NSTextField 中的文本下划线并将 NSCursor 更改为 pointingHandCursor。

奇怪的是,每次都会弹出下划线,而光标更改似乎只能在第二次鼠标输入时起作用:。第一次不会出现。

它似乎与我的子类有关,而不是与环境有关,因为如果我将其中两个 NSTextField 放置在我的 View 中,则它们仅在我第二次将鼠标放在其上时才显示光标。

这是我在子类中使用的代码:

- (id) initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
NSTrackingAreaOptions option = NSTrackingInVisibleRect | NSTrackingMouseEnteredAndExited | NSTrackingActiveInKeyWindow;
NSTrackingArea * area = [[NSTrackingArea alloc] initWithRect:self.bounds options:option owner:self userInfo:nil];
[self addTrackingArea:area];
}
return self;
}

- (void) mouseEntered:(NSEvent *)theEvent
{
[self addCursorRect:self.bounds cursor:[NSCursor pointingHandCursor]];

if (!self.undelineText)
{
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:self.stringValue];
NSRange range = NSMakeRange(0, [attrString length]);
[attrString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSUnderlineStyleSingle] range:range];
self.undelineText = attrString;
}
[self setAttributedStringValue:self.undelineText];
}

- (void) mouseExited:(NSEvent *)theEvent
{
if (!self.normalText)
{
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:self.stringValue];
self.normalText = attrString;
}
[self setAttributedStringValue:self.normalText];
}

希望你能帮助我。

最佳答案

您是否尝试过将 NSTrackingArea 代码放入 awakeOnNib 函数中?所以它看起来像这样:

- (void)awakeFromNib
{
NSTrackingAreaOptions option = NSTrackingInVisibleRect | NSTrackingMouseEnteredAndExited | NSTrackingActiveInKeyWindow;
NSTrackingArea * area = [[NSTrackingArea alloc] initWithRect:self.bounds options:option owner:self userInfo:nil];
[self addTrackingArea:area];
}

关于objective-c - NSTextField 光标仅在第二次鼠标输入时更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24591703/

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