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];
}