При нажатии на пользовательскую ссылку URL в UITextView делегат получает нулевой URL
У меня есть tableView
с tableViewCells
cell
которые показывают 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]