NSTextField/NSTextView中显示超链接以及NSMutableAttributedString用法

扩展NSAttributedString

简单的实现方法是为NSAttributedString 添加一个category。

然后为此category添加额外的方法。

具体实现如下:

[代码]c#/cpp/oc代码:

@interface NSAttributedString (Hyperlink)

    +(id)hyperlinkFromString:(NSString*)inString withURL:(NSURL*)aURL;

@end

@implementation NSAttributedString (Hyperlink)

+(id)hyperlinkFromString:(NSString*)inString withURL:(NSURL*)aURL

{

    NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString: inString];

    NSRange range = NSMakeRange(0, [attrString length]);

    [attrString beginEditing];

    [attrString addAttribute:NSLinkAttributeName value:[aURL absoluteString] range:range];

    // make the text appear in bl

    [attrString addAttribute:NSForegroundColorAttributeName value:[NSColor blueColor] range:range];

16

  

17

    // next make the text appear with an underline

18

    [attrString addAttribute:

            NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSSingleUnderlineStyle] range:range];

    [attrString endEditing];

    return [attrString autorelease];

}

@end

NSTextField中添加超链接

[代码]c#/cpp/oc代码:

 

-(void)setHyperlinkWithTextField:(NSTextField*)inTextField

{

    // both are needed, otherwise hyperlink won't accept mousedown

    [inTextField setAllowsEditingTextAttributes: YES];

    [inTextField setSelectable: YES];

    NSURL* url = [NSURL URLWithString:@\"http://www.apple.com\"];

    NSMutableAttributedString* string = [[NSMutableAttributedString alloc] init];

    [string appendAttributedString: [NSAttributedString hyperlinkFromString:@\"Apple Computer\" withURL:url]];

    // set the attributed string to the NSTextField

    [inTextField setAttributedStringValue: string];

    [string release];

}

NSTextView中添加超链接

[代码]c#/cpp/oc代码:

-(void)setHyperlinkWithTextView:(NSTextView*)inTextView

{    // create the attributed string

    NSMutableAttributedString *string = [[NSMutableAttributedString alloc] init];

05

  

06

    // create the url and use it for our attributed string

07

    NSURL* url = [NSURL URLWithString: @\"http://www.apple.com\"];

    [string appendAttributedString:[NSAttributedString hyperlinkFromString:@\"Apple Computer\" withURL:url]];

    // apply it to the NSTextView's text storage

    [[inTextView textStorage] setAttributedString: string];

    [string release];

}

posted @   ios_福  阅读(1140)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示