NSTextView / NSTextfields中的工具提示

时间:2018-02-16 12:10:56

标签: cocoa uikit foundation xcode9.2

我想在属性字符串的某些部分上显示工具提示,并认为在所需范围内使用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 个答案:

答案 0 :(得分:0)

使用NSToolTipAttributeNameNSLinkAttributeName结合使用的方法可以做到这一点,例如:

NSMutableDictionary* labelAttributes = [NSMutableDictionary new];
labelAttributes[NSToolTipAttributeName] = @"Tooltip";
labelAttributes[NSLinkAttributeName] = @"Link";
NSAttributedString* labelString = [NSAttributedString
    attributedString:@"Display"]
    withAttributes:labelAttributes];

小心不要忘记displaysLinkToolTips = YES上的NSTextView

或者,您可以使用NSView Tooltips API,其中提供:

- (NSToolTipTag)addToolTipRect:(NSRect)rect owner:(id)owner userData:(void *)data;