之所以把 NSLinkAttributeName
屬性單獨列出來,是因為在 UILabel 和 UITextField 中是無法使用該屬性的。更準確點說是在UILabel 和 UITextField 中無法實現(xiàn)點擊鏈接啟動瀏覽器打開一個URL地址,因為在此過程中用到了一個代理函數(shù)。只能用在 UITextView 中。
NSLinkAttributeName
的對象是 NSURL 類型 或 NSString捷枯,但是優(yōu)先使用 NSURL。
需要實現(xiàn)UITextView的代理方法 - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
专执,在該方法中淮捆,返回 YES,則會打開URL地址,返回 NO則不會攀痊。
設置方式一
將全部文字設置為鏈接(可點擊)
NSDictionary *dictAttr = @{NSLinkAttributeName:[NSURL URLWithString:@"http://www.reibang.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.reibang.com"] range:[str rangeOfString:@"簡書"]];
textView.attributedText = attrStr;
代理回調方法
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
//在這里是可以做一些判定什么的桐腌,用來確定對應的操作。
return YES;
}
注意:
- 實現(xiàn)textView的代理苟径,否則調不到回調方法案站。
- 設置textView的 editable 屬性為 NO,在可編輯的狀態(tài)下是不可點擊的棘街。
- 在模擬器環(huán)境下一直無法點擊蟆盐,在真機上是正常的,不知道是不是模擬器不支持遭殉。