How to create UILabel with clickable first word

后端 未结 4 1497
攒了一身酷
攒了一身酷 2020-12-20 18:28

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 w

相关标签:
4条回答
  • 2020-12-20 18:28

    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

    0 讨论(0)
  • 2020-12-20 18:33

    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];
    
    0 讨论(0)
  • 2020-12-20 18:40

    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.

    0 讨论(0)
  • 2020-12-20 18:45
    • 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!

    0 讨论(0)
提交回复
热议问题