2

I have a table view in which each row contains various information like name, picture, message etc.

This message may contain some words starting with '@' or '#'. I want to make these words clickable and on click i want to open another view controller instead of browser.

I know we can set UIDataDetector type on textview for links but that only works for links.

Is there any way so that I can tell textview to detect text matching some regular expression and then make that text clickable ?

EDIT: Finally I am able to achieve this, for those who are still dealing with this issue, I have written a blog post: http://www.uditagarwal.com/2013/10/make-different-words-in-uitextview.html

Udit Agarwal
  • 868
  • 9
  • 22
  • Simple answer **YES** What have you tried though? Or have you not tried at all yet? Please share some code. – Popeye Oct 16 '13 at 07:43
  • If you want to play, here a subclass of UILabel to make letter clickable: http://goo.gl/Of1nY7 – elp Oct 16 '13 at 08:01

1 Answers1

3

Answer : GLTapLabel

There is a method named -drawTextInRect in class named GLTapLabel which contains one line of code :

BOOL hot = [word hasPrefix:@"#"] || [word hasPrefix:@"@"];

You just have to change the prefix values here and you will have your desired result.


There is one delegate method named -labledidSelectedHotWord. You can write here the code about the action you want to perform when the word with desired prefix is clicked. In your case, you can write your navigation code in this method.


Here is the Screenshot :

enter image description here

Bhavin
  • 27,155
  • 11
  • 55
  • 94