【问题标题】:Links in UITextView : add and customUITextView 中的链接:添加和自定义
【发布时间】:2013-07-13 09:49:38
【问题描述】:

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

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

如果这一切都很复杂,你有没有更好的方法来轻松地做到这一点?

谢谢!

【问题讨论】:

标签: ios uitextview hyperlink


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试这个:

    self.myTextView.dataDetectorTypes = UIDataDetectorTypeLink;
    

    【讨论】:

    • 谢谢,但正如我所说,我不想识别网址。我想要一个简单的词,就像在 HTML 中一样:<a href="http://stackoverflow.com ">stackoverflow</a>
    【解决方案3】:

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

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

    【讨论】:

    【解决方案4】:
    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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-16
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      相关资源
      最近更新 更多