Objective-C UILabel作为HyperLink

我正在尝试为UIWebView创build一个UILabel链接。 我如何使UILabel作为超链接工作?

你可以去UITapGestureRecognizer,这将工作类似的,你想要的 –

 UILabel *myLabel = [[UILabel alloc] initWithFrame:];//Define label here as per needs myLabel.userInteractionEnabled = YES; UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myAction:)]; [myLabel addGestureRecognizer:gr]; gr.numberOfTapsRequired = 1; gr.cancelsTouchesInView = NO; [self.view addSubview:myLabel]; 

现在采取行动 –

 - (void) myAction: (UITapGestureRecognizer *) gr { // Define actions here } 

一种可能的解决scheme是使用types为UIButtonTypeCustom而不是UILabel UIButtonTypeCustom 。 它看起来像一个标签,是可点击的。

你也可以考虑第三方实现,比如three20的TTLabel和Fancy UILabel 。

你只要检查这个链接,这将有助于you.try一次,并告诉我们,如果它对你有帮助。

如何使一个特定的词在文本中的含义可触及?

我发现一些代码来超链接UILabe …希望它会有帮助:来源: http ://sickprogrammersarea.blogspot.in/2014/03/adding-links-to-uilabel.html

 #import "ViewController.h" #import "TTTAttributedLabel.h" @interface ViewController () @end @implementation ViewController { UITextField *loc; TTTAttributedLabel *data; } - (void)viewDidLoad { [super viewDidLoad]; UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(5, 20, 80, 25) ]; [lbl setText:@"Text:"]; [lbl setFont:[UIFont fontWithName:@"Verdana" size:16]]; [lbl setTextColor:[UIColor grayColor]]; loc=[[UITextField alloc] initWithFrame:CGRectMake(4, 20, 300, 30)]; //loc.backgroundColor = [UIColor grayColor]; loc.borderStyle=UITextBorderStyleRoundedRect; loc.clearButtonMode=UITextFieldViewModeWhileEditing; //[loc setText:@"Enter Location"]; loc.clearsOnInsertion = YES; loc.leftView=lbl; loc.leftViewMode=UITextFieldViewModeAlways; [loc setDelegate:self]; [self.view addSubview:loc]; [loc setRightViewMode:UITextFieldViewModeAlways]; CGRect frameimg = CGRectMake(110, 70, 70,30); UIButton *srchButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; srchButton.frame=frameimg; [srchButton setTitle:@"Go" forState:UIControlStateNormal]; [srchButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; srchButton.backgroundColor=[UIColor clearColor]; [srchButton addTarget:self action:@selector(go:) forControlEvents:UIControlEventTouchDown]; [self.view addSubview:srchButton]; data = [[TTTAttributedLabel alloc] initWithFrame:CGRectMake(5, 120,self.view.frame.size.width,200) ]; [data setFont:[UIFont fontWithName:@"Verdana" size:16]]; [data setTextColor:[UIColor blackColor]]; data.numberOfLines=0; data.delegate = self; data.enabledTextCheckingTypes=NSTextCheckingTypeLink|NSTextCheckingTypePhoneNumber; [self.view addSubview:data]; } - (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url { NSString *val=[[NSString alloc]initWithFormat:@"%@",url]; if ([[url scheme] hasPrefix:@"mailto"]) { NSLog(@" mail URL Selected : %@",url); MFMailComposeViewController *comp=[[MFMailComposeViewController alloc]init]; [comp setMailComposeDelegate:self]; if([MFMailComposeViewController canSendMail]) { NSString *recp=[[val substringToIndex:[val length]] substringFromIndex:7]; NSLog(@"Recept : %@",recp); [comp setToRecipients:[NSArray arrayWithObjects:recp, nil]]; [comp setSubject:@"From my app"]; [comp setMessageBody:@"Hello bro" isHTML:NO]; [comp setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; [self presentViewController:comp animated:YES completion:nil]; } } else{ [[UIApplication sharedApplication] openURL:[NSURL URLWithString:val]]; } } -(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{ if(error) { UIAlertView *alrt=[[UIAlertView alloc]initWithTitle:@"Erorr" message:@"Some error occureed" delegate:nil cancelButtonTitle:@"" otherButtonTitles:nil, nil]; [alrt show]; [self dismissViewControllerAnimated:YES completion:nil]; } else{ [self dismissViewControllerAnimated:YES completion:nil]; } } - (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithPhoneNumber:(NSString *)phoneNumber { NSLog(@"Phone Number Selected : %@",phoneNumber); UIDevice *device = [UIDevice currentDevice]; if ([[device model] isEqualToString:@"iPhone"] ) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",phoneNumber]]]; } else { UIAlertView *Notpermitted=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Your device doesn't support this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [Notpermitted show]; } } -(void)go:(id)sender { [data setText:loc.text]; } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"Reached"); [loc resignFirstResponder]; }