UITextView中的链接:添加和自定义

时间:2013-07-15 13:46:40

标签: ios uitextview hyperlink

1)我想添加一个到UITextView的链接。我知道如果我在文本中添加http://stackoverflow.com这样的网址,它会自动被识别为链接。但有没有办法让一个单词的链接,而不仅仅是一个网址?与HTML中一样:<a href="http://stackoverflow.com ">stackoverflow</a>

2)我想自定义此链接,尤其是它的颜色,字体类型等。有没有办法只为链接添加属性?

如果这一切都很复杂,你认为有更好的方法吗?

谢谢!

4 个答案:

答案 0 :(得分:3)

试试这个:

self.myTextView.dataDetectorTypes = UIDataDetectorTypeLink;

答案 1 :(得分:1)

它接缝不可能用UITextViews做我想要的东西(至少不容易)。解决方案是使用UIWebView,并使用文本和链接加载本地HTML文件。您甚至可以使用一些CSS来自定义颜色,大小......

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    // webview
    webview.delegate = (id<UIWebViewDelegate>)self;
    NSString *path;
    NSBundle *thisBundle = [NSBundle mainBundle];
    path = [thisBundle pathForResource:@"fileName" ofType:@"html"];
    NSError *error;
    NSString *initialHTMLString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
    [webview loadHTMLString:initialHTMLString baseURL:nil];

    webview.opaque = NO;
    webview.backgroundColor = [UIColor clearColor];
}


- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

    if (navigationType == UIWebViewNavigationTypeLinkClicked) {

        [[UIApplication sharedApplication] openURL:[request URL]];

        return NO;
    }

return YES;

}

我希望这可以帮助任何有同样问题的人!

答案 2 :(得分:1)

textView.dataDetectorTypes = .link
textView.isEditable = false
textView.isSelectable = true

let html = "<div style=\"font-family: 'Arial'; font-size: 20;\"><a href=\"http://www.stackoverflow.com\">stackoverflow</a></div>"

if let dataWithHTML = html.data(using: .utf8) {

    textView.attributedText = try? NSAttributedString(data: dataWithHTML, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue], documentAttributes: nil)
}

答案 3 :(得分:0)

查看DTCoreText,它提供了一系列不同的视图,您可以使用HTML输入并自定义显示和处理。