在 UITextView 中点击自定义 URL link 时,委托收到 nil URL

When tapping a custom URL link in a UITextView the delegate receives nil URL

我有一个 tableViewtableViewCells cell 显示 textView.
textView 使用带有自定义 URL link 信息的 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;

当我点击 link 时,在委托中调用 textView:shouldInteractWithURL:inRange:,因此已检测到自定义 URL link 并做出响应。

但是,提供的 URL 是 nil

我错过了什么?

抱歉问得太快了。我发现了问题,但也许这对其他人有帮助:

我的变量 userName 只包含一个 space,因此无法转换为 URL

删除 space 后,它起作用了。

要制作一个可用于 URL 的字符串,可以在 iOS8 和更早的
中使用 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding

并在 iOS9

stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]