为UITextView提供可点击的URL链接

时间:2017-10-03 14:31:05

标签: ios swift uitextview nsattributedstring

您好我已经解决了这个问题一段时间了,我已经阅读了几个帖子,我无法理解如何制作可在互联网上发送的可点击UITextView。这是我的代码:

func transformText(text: String, underlined: Bool, linkURL: String) -> NSAttributedString {
    let textRange = NSMakeRange(0, text.characters.count)
    let attributedText = NSMutableAttributedString(string: text)
    if underlined{
        attributedText.addAttribute(NSUnderlineStyleAttributeName , value: NSUnderlineStyle.styleSingle.rawValue, range: textRange)
        attributedText.addAttribute(NSUnderlineColorAttributeName , value: UIColor.lightGray, range: textRange)
    }
    attributedText.addAttribute(NSFontAttributeName , value: UIFont(name: "Helvetica-Light", size: 17)!, range: textRange)
    attributedText.addAttribute(NSForegroundColorAttributeName , value: UIColor.lightGray, range: textRange)
    if(linkURL != "")
    {
        let attrib = [NSLinkAttributeName: NSURL(string: linkURL)!]
        attributedText.addAttributes(attrib, range: textRange)
    }
    return attributedText
}

以下是我的称呼方式:

TextContent.attributedText = transformText(text: self.TelBox.TextContent.text, underlined: true, linkURL: "https://www.google.fr")`

提前致谢

4 个答案:

答案 0 :(得分:2)

在故事板上选择UITextView,然后转到“显示属性”检查器',然后选择' behavior'取消选择'可编辑'和数据检测器'选择'链接'。然后去找身份检查员' Sohw身份检查员'和特质'选择'链接'和'选择'。

答案 1 :(得分:0)

事实上,你想让UITextView变得可点击,要求你让UITextView不可编辑,因为当你点击文本时它会在键盘上午餐。为防止这种情况,您可以使用

  

textView.isEditable = false

希望它有所帮助。

答案 2 :(得分:0)

确保您还启用了数据类型检测。对于超链接:

theTextView.dataDetectorTypes = [.link]

答案 3 :(得分:0)

您必须设置可编辑 YES或设置可选 YES

NSString *text = @"this is google web link";
UITextView *textView = [[UITextView alloc] init];

NSDictionary *dictionary = @{NSFontAttributeName:[UIFont systemFontOfSize:10],NSForegroundColorAttributeName:[UIColor whiteColor]};
NSMutableAttributedString *attributeStr = [[NSMutableAttributedString alloc] initWithString:text attributes:dictionary];

textView.attributedText = attributeStr;

[attributeStr addAttributes:@{NSLinkAttributeName: [NSURL URLWithString:@"http://www.google.com"]} range:[_readMessage rangeOfString:@"google web link"]];
textView.attributedText = attributeStr;

textView.editable = NO;
textView.selectable = YES;
textView.delegate = self;

谷歌链接将由代表

回复
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange