在 UITextView 中点击自定义 URL link 时,委托收到 nil URL
When tapping a custom URL link in a UITextView the delegate receives nil URL
我有一个 tableView
和 tableViewCells
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]
我有一个 tableView
和 tableViewCells
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]