我有tableView
tableViewCells
cell
,显示textView
。
textView
使用attributedString
自定义网址链接信息,在tableView:cellForRowAtIndexPath:
中进行设置,如this tutorial所示:
NSMutableAttributedString *attributedDisplayString = [[NSMutableAttributedString alloc] initWithString:displayString];
[attributedDisplayString addAttribute:NSLinkAttributeName
value:[NSString stringWithFormat:@"username://%@", userName]
range:NSMakeRange(0, userName.length)];
cell.textView.attributedText = attributedDisplayString;
当我点击链接时,在委托中调用textView:shouldInteractWithURL:inRange:
,因此检测到自定义URL链接并作出响应。
但是,提供的网址为nil
。
我错过了什么?
答案 0 :(得分:1)
抱歉问得太快了。我发现了问题,但也许这有助于其他人:
我的变量userName
只包含space
,因此无法转换为URL
。
删除空格后,它可以正常工作。
要创建一个可用于URL的字符串,可以在iOS8及更早版本中使用
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding
和iOS9
stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]