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

浙公网安备 33010602011771号