2013-10-10 1 views
4

Кто-нибудь знает, как я могу сделать #KEY и @NAME доступными в тексте комментариев в IOS7 (так же, как это делает Instagram)? Я пытаюсь использовать NSMutableAttributedString, но я не уверен, как обнаружить событие щелчка, на изображении ниже, нажав @Username пользователь должен иметь к профилю пользователяКак сделать #key и @key кликабельными в IOS7

enter image description here

+1

откуда появляется «метка» ? в приложении? в 'UITextField'? – Raptor

+0

привет @ShivanRaptor это происходит в приложении. в основном, если пользователь вводит #key в свой комментарий, когда этот комментарий визуализируется, мы хотим нажать на #key и получить результат поиска для него – nightograph

+0

, когда вы произнесли комментарий, это своего рода веб-интерфейс в UIWebView? Я смущен. Лучше покажите нам коды и скриншоты. – Raptor

ответ

7

Глядя на 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.

+0

приятный ответ помощник! –

0

Вы можете посмотреть на использование DTCoreText который предлагает кнопки ссылок, которые вы можете добавить к атрибутированному тексту. Он основан на синтаксическом анализе HTML, поэтому вам нужно будет немного поработать с разбором, чтобы определить, куда должны идти ссылки.

В качестве альтернативы вы можете добавить распознаватель жестов к представлению комментариев. При обнаружении крана вы можете использовать <UITextInput>, чтобы узнать, какой текст был использован, и если это «ссылка».

1

Вы можете использовать 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, иначе веб-просмотр попытается загрузить запрос.

+0

Я использовал этот подход в одном из моих приложений, и это самый простой подход, который работает на большинстве версий iOS (включая старые). Побочным эффектом является то, что скорость загрузки медленная (если только вещи не были предварительно отображены до появления пользователя), а размер 'UIWebView' должен сделать дополнительное изменение размера, если он не является полноэкранным. – Raptor