Кто-нибудь знает, как я могу сделать #KEY и @NAME доступными в тексте комментариев в IOS7 (так же, как это делает Instagram)? Я пытаюсь использовать NSMutableAttributedString, но я не уверен, как обнаружить событие щелчка, на изображении ниже, нажав @Username пользователь должен иметь к профилю пользователяКак сделать #key и @key кликабельными в IOS7
ответ
Глядя на UITextViewDelegate
protocol, в iOS7 есть новый метод: textView:shouldInteractWithURL:inRange:
.
Вы не указали ни одного кода, но можно с уверенностью предположить, что у вас есть attributedString
и range
, представляющий область, в которой вы посинели. Я также предполагаю, что вы можете извлечь имя пользователя в переменную с именем username
.
С помощью этих трех частей информации вы добавляете атрибут ссылки в этот диапазон.
[attributedString addAttribute:NSLinkAttributeName
value:[@"username://" stringByAppendingString:username]
range:range];
В делегате, вы могли бы сделать что-то вроде этого:
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
if ([URL.scheme isEqualToString:@"username"]) {
[self doSomethingWithUserName:URL.host];
return NO;
}
return YES;
}
Я считаю, что они в этом предназначались Представляющим Text Kit сессии на WWDC 2013.
приятный ответ помощник! –
Вы можете посмотреть на использование DTCoreText который предлагает кнопки ссылок, которые вы можете добавить к атрибутированному тексту. Он основан на синтаксическом анализе HTML, поэтому вам нужно будет немного поработать с разбором, чтобы определить, куда должны идти ссылки.
В качестве альтернативы вы можете добавить распознаватель жестов к представлению комментариев. При обнаружении крана вы можете использовать <UITextInput>
, чтобы узнать, какой текст был использован, и если это «ссылка».
Вы можете использовать HTML ссылки и сделать это с помощью UIWebView
<div> Here goes the text. <a href="https://stackoverflow.com/users/Username">@Username</a> <a href="/tags/mytag">#mytag</a>. </div>
Когда пользователь нажимает на ссылку, метод делегата веб-просмотра в webView:shouldStartLoadWithRequest:navigationType:
называется. Там вы можете получить URL-адрес от запроса и делать все, что хотите. Для этого важно вернуть NO
, иначе веб-просмотр попытается загрузить запрос.
Я использовал этот подход в одном из моих приложений, и это самый простой подход, который работает на большинстве версий iOS (включая старые). Побочным эффектом является то, что скорость загрузки медленная (если только вещи не были предварительно отображены до появления пользователя), а размер 'UIWebView' должен сделать дополнительное изменение размера, если он не является полноэкранным. – Raptor
откуда появляется «метка» ? в приложении? в 'UITextField'? – Raptor
привет @ShivanRaptor это происходит в приложении. в основном, если пользователь вводит #key в свой комментарий, когда этот комментарий визуализируется, мы хотим нажать на #key и получить результат поиска для него – nightograph
, когда вы произнесли комментарий, это своего рода веб-интерфейс в UIWebView? Я смущен. Лучше покажите нам коды и скриншоты. – Raptor