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】:

有几种方法可以做到这一点,将NSToolTipAttributeNameNSLinkAttributeName 结合使用,例如:

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 中的工具提示的主要内容,如果未能解决你的问题,请参考以下文章

新版测试中

初一下期中试卷

c++理解协程05

Access中VBA中excel文件中的VLookup

Groovy闭包 Closure ( 闭包中调用 Groovy 脚本中的方法 | owner 与 delegate 区别 | 闭包中调用对象中的方法 )

在 Django 中,根据模型中其他字段中选择的值删除选择字段下拉列表中的选项