I'm using a NSTextView
with an NSAttributedString
to display some links using the NSLinkAttributeName
. I'm styling those links using the setLinkTextAttributes:
method of NSTextView
. However, I would like to give the user a visual feedback when he clicks the link, for example by changing the color of the link while the user pressed down the left mouse button. Is there an easy way to do that or do I have to use NSTextAttachment
?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
I don't think there is an easy way to do this if you want it to happen on the mouseDown event. If you can wait until the click is completed, then you can do it using the text view delegate method, textView:clickedOnLink:atIndex: to get the index of the clicked on link. You could then use that index to pass to the text storage method, attributesAtIndex:effectiveRange: to get the range of the link and finally, use setAttributes:range: to make whatever changes you want to the attributes of the link.
If you really need to do it on the mouseDown, then you'll have to subclass the text view and override mouseDown and maybe use something like characterIndexForPoint: to find out whether you've clicked on a link and respond as above.