iOS UITextView增加链接 交互

xiaoxiao2021-02-27  152

//首先,创建一个NSAttributedString然后增加给它增加一个NSLinkAttributeName 属性,见以下: NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"This is an example by @marcelofabri_"]; [attributedString addAttribute:NSLinkAttributeName value:@"username://marcelofabri_" range:[[attributedString string] rangeOfString:@"@marcelofabri_"]]; NSDictionary *linkAttributes = @{NSForegroundColorAttributeName: [UIColor greenColor], NSUnderlineColorAttributeName: [UIColor lightGrayColor], NSUnderlineStyleAttributeName: @(NSUnderlinePatternSolid)}; // assume that textView is a UITextView previously created (either by code or Interface Builder) textView.linkTextAttributes = linkAttributes; // customizes the appearance of links textView.attributedText = attributedString; textView.delegate = self; textView.editable = NO; // 非编辑状态下才可以点击Url 这样就可以让链接在文本中显示。然而,你也可以控制当链接被点击的时候会发生什么,实现这个可以使用UITextViewDelegate协议的新的shouldInteractWithURL方法,就像这样:

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange { if ([[URL scheme] isEqualToString:@"username"]) { NSString *username = [URL host]; // do something with this username // ... return NO; } return YES; // let the system open this URL }

例子

   NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc]initWithString:str];     [attrStr addAttribute:NSLinkAttributeName value:[NSURL URLWithString:@"http://blog.csdn.net/hdfqq188816190/article/details/53556663"] range:[str rangeOfString:@"约炮之旅"]];     textview.attributedText = attrStr;     textview.delegate = self;     textview.editable = NO;   // 非编辑状态下才可以点击Url - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange { return YES; }

转载请注明原文地址: https://www.6miu.com/read-12655.html

最新回复(0)