UIKitiOS 艾欧艾斯

富文本AttributedString总结(三)之链接属性的设置

2015-10-14  本文已影响4055人  懒得起名的伊凡

之所以把 NSLinkAttributeName 属性单独列出来,是因为在 UILabel 和 UITextField 中是无法使用该属性的。更准确点说是在UILabel 和 UITextField 中无法实现点击链接启动浏览器打开一个URL地址,因为在此过程中用到了一个代理函数。只能用在 UITextView 中。

NSLinkAttributeName 的对象是 NSURL 类型 或 NSString,但是优先使用 NSURL

需要实现UITextView的代理方法 - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange,在该方法中,返回 YES,则会打开URL地址,返回 NO则不会。

设置方式一

将全部文字设置为链接(可点击)

NSDictionary *dictAttr = @{NSLinkAttributeName:[NSURL URLWithString:@"http://www.jianshu.com"]};
NSAttributedString *attrStr = [[NSAttributedString alloc]initWithString:@"简书" attributes:dictAttr];
textView.attributedText = attrStr;

设置方式二

将部分文字设置为链接

NSString *str = @"跳转到简书";
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc]initWithString:str];
[attrStr addAttribute:NSLinkAttributeName value:[NSURL URLWithString:@"http://www.jianshu.com"] range:[str rangeOfString:@"简书"]];
textView.attributedText = attrStr;

代理回调方法

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
    //在这里是可以做一些判定什么的,用来确定对应的操作。
return YES;
}
注意:
上一篇下一篇

猜你喜欢

热点阅读