NSTextView/NSTextfields 中的工具提示
Posted
技术标签:
【中文标题】NSTextView/NSTextfields 中的工具提示【英文标题】:Tooltips in NSTextView/NSTextfields 【发布时间】:2018-02-16 12:10:56 【问题描述】:我想在属性字符串的一部分上显示工具提示,并认为在所需范围上使用 NSToolTipAttributeName 属性可以解决问题,但我无法让它工作。 我正在尝试使用 MACOS、Xcode (9.2)
NSString *fullString = @"Create a new tooltip";
NSString *compareString =@"tooltip";
NSRange tooltipRange = [fullString rangeOfString: compareString];
[senderTextView.textStorage addAttribute:NSToolTipAttributeName
value:@"Custom tooltip"
range:tooltipRange];
[senderTextView.textStorage addAttribute:NSForegroundColorAttributeName
value:[NSColor redColor] range:tooltipRange];
“工具提示”一词按预期显示为红色,但当我将鼠标悬停在它上面时,没有工具提示出现。我错过了什么?
【问题讨论】:
【参考方案1】:有几种方法可以做到这一点,将NSToolTipAttributeName
与NSLinkAttributeName
结合使用,例如:
NSMutableDictionary* labelAttributes = [NSMutableDictionary new];
labelAttributes[NSToolTipAttributeName] = @"Tooltip";
labelAttributes[NSLinkAttributeName] = @"Link";
NSAttributedString* labelString = [NSAttributedString
attributedString:@"Display"]
withAttributes:labelAttributes];
注意不要忘记NSTextView
上的displaysLinkToolTips = YES
。
或者,您可以使用NSView
Tooltips API,它提供:
- (NSToolTipTag)addToolTipRect:(NSRect)rect owner:(id)owner userData:(void *)data;
【讨论】:
这是错误的,不需要链接属性(也不需要displaysLinkToolTips
)。工具提示可以单独呈现。以上是关于NSTextView/NSTextfields 中的工具提示的主要内容,如果未能解决你的问题,请参考以下文章
Groovy闭包 Closure ( 闭包中调用 Groovy 脚本中的方法 | owner 与 delegate 区别 | 闭包中调用对象中的方法 )