Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create UILabel with clickable first word

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!

like image 612
SAMIR RATHOD Avatar asked Mar 08 '13 11:03

SAMIR RATHOD


2 Answers

I suppose more elegant solution will be using TTTAttributedString or similar.

Example:

simple demo

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);
}

Complete source code

Note that you should open xcworkspace in Xcode/AppCode because I'm using CocoaPods here.

Hope it helps.

BR.
Eugene

like image 191
dymv Avatar answered Nov 15 '22 23:11

dymv


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];
like image 24
nsgulliver Avatar answered Nov 15 '22 23:11

nsgulliver