I want to create label in iOS, can anyone help me to make the first word of the label's text bold and clickable. The label displays username and its comment and the first word is always the username. Thanks in advance!
Asked
Active
Viewed 9,509 times
7
-
1be more specific, post some code that u tried – Nazik Mar 08 '13 at 11:58
-
only the first word should respond to user interaction? – tkanzakic Mar 08 '13 at 11:58
-
yes only first word respond to user interaction. – SAMIR RATHOD Mar 08 '13 at 11:59
-
Please check http://stackoverflow.com/questions/8811909/getting-the-word-touched-in-a-uilabel-uitextview/21577829#21577829 . It will give you tapped word of `UILabel` you can simply compare it with first word of `UILabel`. – TheTiger Feb 05 '14 at 12:57
4 Answers
10
I suppose more elegant solution will be using TTTAttributedString or similar.
Example:
Output:
2013-03-10 07:16:54.429 ClickableUILabel-SO[4770:c07] UserName clicked
Address: {
comment = "Your comment.";
userName = user2126537;
}
2013-03-10 07:16:55.460 ClickableUILabel-SO[4770:c07] UserName clicked
Address: {
comment = "Another comment.";
userName = nsgulliver;
}
Key point:
...
NSRange userNameRange = [text rangeOfString: userName];
...
label.delegate = self;
[label addLinkToAddress: @{
@"userName" : userName,
@"comment" : comment
}
withRange: userNameRange];
...
- (void) attributedLabel: (TTTAttributedLabel *)label
didSelectLinkWithAddress: (NSDictionary *)addressComponents
{
NSLog(@"UserName clicked\nAddress:\t%@", addressComponents);
}
Note that you should open xcworkspace
in Xcode/AppCode because I'm using CocoaPods here.
Hope it helps.
BR.
Eugene

dymv
- 3,252
- 2
- 19
- 29
-
how can i detect the #tags and @usernames using TTTAttributedString – vamsi575kg Jun 19 '13 at 08:03
-
It does not work with compile error: linker command failed with exit code 1 (use -v to see invocation) – Soheil Novinfard Feb 06 '16 at 16:05
-
I've just updated the sources, please use xcworkspace file instead of xcodeproj. – dymv Feb 16 '16 at 12:54
4
You need to use UITapGestureRecognizer
for making UILabel
clickable. Use UIView
and add UILabel
as subviews to that
UITapGestureRecognizer* gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(yourMethod:)];
[yourLabelView setUserInteractionEnabled:YES];
[yourLabelView addGestureRecognizer:gesture];
One way of making first word clickable
is to take out the first word from the label using the string method and store it in another label and use the above code to make it clickable
NSArray* wordArray = [yourLabel.text componentsSeparatedByString: @" "];
NSString* firstWord = [wordArray objectAtIndex: 0];

clemens
- 16,716
- 11
- 50
- 65

nsgulliver
- 12,655
- 23
- 43
- 64
-
1
-
-
1If the label text will be constant create a blank view and place over top of the first word, then attach the gesture recognizer to that. – Jason C. Howlin Mar 08 '13 at 12:05
-
This is the way to make label clickable, I agree.But the question doesn't demand that, have a better look at the title itself once more. @Foram Mukund Shah 's answer can be used. – DD_ Mar 08 '13 at 12:31
-
what is the point then if he has to use button. he could just button this question would not make sense, he asked about Label. – nsgulliver Mar 08 '13 at 12:53
2
- Make a custom button, which will contain the first word of your username, make text bold.
- Take a label, just beside the custom button & write the rest part of your username other than the first word.
- On the click event of the custom button, do whatever you want to do..
Hope this will be clear to you.
Enjoy Programming!

Niru Mukund Shah
- 4,637
- 2
- 20
- 34
0
labels seems to be difficult. Ypu can use a view. add a button and lable on that side by side and add 1st character to button and others to label.

Durgaprasad
- 1,910
- 2
- 25
- 44