2015-01-24 1 views
0

У меня есть UITextView и с использованием NSRegularExpression. Я нахожу имена в своем текстовом представлении. Таким образом, я могу выделить матчи, используя этот код:Сделать текст сопоставленным с NSRegularExpression кликабельным в UITextView

for match in matches as [NSTextCheckingResult] { 
    let matchRange = match.range 
    attributedText.addAttribute(NSStrokeColorAttributeName, value: UIColor.blueColor(), range: matchRange) 
} 

Я хочу, чтобы сделать его интерактивным и передать его текст на новый контроллер представления. Или, возможно, измените его на UIButton с тем же текстом и добавьте segue в новый контроллер представления. Я не уверен, как это сделать правильно.

ответ

0

UITextView не имеет для этого функциональности. Вы можете попробовать свой подход UIButton, но у вас возникнут проблемы со ссылками, которые переносятся на несколько строк.

два возможных решения:

  1. Вы можете быть в состоянии заставить его URL функциональность обработки, чтобы сделать то, что вы хотите - смотрите this question. Это будет зависеть от вашего NSRegularExpression.
  2. Возможно, вы захотите заменить текстовое представление на TTTAttributedLabel или аналогичную стороннюю библиотеку, которая обрабатывает это для вас. Я думаю, что это самый гибкий вариант, и мой рекомендуемый подход.
+0

выглядит он не обрабатывает перетекает, он работает только с ссылками? Я хочу открыть совпадающее слово в новом vc – user528432

+0

Вы можете нажать сеге, когда ссылка будет использована в 'shouldInteractWithURL: inRange:', если вы можете получить ссылки на работу, но в противном случае вам придется идти с # 2. –

+0

это выглядит довольно круто https://github.com/evilBird/HBVLinkedTextView, но его цель c – user528432

0

Для будущих Googlers, вы могли бы использовать NSLinkAttributeName

attributedText.addAttribute(NSLinkAttributeName, value: "\(your_value)", range: matchRange)