NSAttributedString不在Textview中显示NSLink

时间:2015-04-03 16:08:38

标签: objective-c nsattributedstring

我有一个NSAttributedString,它是用HTML制作的。

NSAttributedString *decodedString = [[NSAttributedString alloc] initWithData:[encodedString dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]} documentAttributes:nil error:nil];
self.story.attributedText = decodedString;

当我运行代码并查看TextView(self.story)时,除了超链接(HTTP)之外,HTML中的所有文本和图像都会显示出来。

他们占据的空间在那里,但链接不是

示例:超链接________________应该在那里。 只是没有____它只是空白。

控制台显示NSAttributedString显示

{
    NSColor = "UIDeviceRGBColorSpace 0 0 0.933333 1";
    NSFont = "<UICTFont: 0x15654c230> font-family: \"Times New Roman\"; font-weight: normal; font-style: normal; font-size: 12.00pt";
    NSKern = 0;
    NSLink = "https://www.kickstarter.com/projects/1425492550/sesame-your-key-reinvented";
    NSParagraphStyle = "Alignment 4, LineSpacing 0, ParagraphSpacing 12, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, Tabs (\n), DefaultTabInterval 36, Blocks (null), Lists (null), BaseWritingDirection 0, HyphenationFactor 0, TighteningFactor 0, HeaderLevel 0";
    NSStrokeColor = "UIDeviceRGBColorSpace 0 0 0.933333 1";
    NSStrokeWidth = 0;
    NSUnderline = 1;
}

但&#34; https://www.kickstarter.com/projects/1425492550/sesame-your-key-reinvented&#34;无处可寻。

关于为什么会发生这种情况以及如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

我正在回答我自己的问题。

链接显示为白色(在白色背景上),并且它们无法点击,因此看起来好像它们不在那里。

我用这段代码修复了它。

twocell.story.linkTextAttributes = @{NSForegroundColorAttributeName:[UIColor darkGrayColor]};
        NSMutableAttributedString *res = [twocell.story.attributedText mutableCopy];
        [res beginEditing];
        [res enumerateAttribute:NSUnderlineStyleAttributeName inRange:NSMakeRange(0,res.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) {

            if (value){
                [res addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:range];
                [res endEditing];
                [twocell.story setAttributedText:res];
            }
        }];

将颜色更改为深灰色并添加下划线。