При нажатии на пользовательскую ссылку URL в UITextView делегат получает нулевой URL

У меня есть tableView с tableViewCellscell которые показывают textView,
textView использует attributedString с пользовательской информацией URL-ссылки, настроенной в tableView:cellForRowAtIndexPath: как показано в этом уроке:

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 была обнаружена и отвечает.

Тем не менее, предоставленный URLnil,

Что мне не хватает?

1 ответ

Решение

Извините, что спросил слишком быстро. Я нашел проблему, но, возможно, это помогает другим:

Моя переменная userName просто содержал spaceи, следовательно, не может быть преобразован в URL,

После удаления пробела все работает.

Чтобы создать строку, которую можно использовать для URL, можно использовать в iOS8 и более ранних версиях
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding

и в iOS9

stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]
Другие вопросы по тегам