2012-10-30 1 views
7

Ich habe DTCoreText verwendet, um formatierten Text in meinen Apps anzuzeigen. DTAtributedTextView unterstützt auch anklickbare Links.
Seit iOS6 können wir die attributeStrings in UILabel mit der Funktion setAttributedText anzeigen.
Aber wie kann ich Links anzeigen, die anklickbar sind? Gibt es eine Möglichkeit, eine Delegate-Funktion usw. aufzurufen, wenn eine Verbindung gedrückt wird?Hinzufügen von anklickbaren Links zu UILabel mit attributiertenText in iOS 6

Antwort

3

Das iOS 6.0 UILabel kann immer noch keine anklickbaren Links anzeigen.

Sie könnten jedoch stattdessen ein UITextView verwenden. Die Textansicht kann Links erkennen, aber die Linkerkennung funktioniert nur, wenn die Bearbeitung von Text deaktiviert ist. Einschränkungen sind, dass Sie so etwas nicht in BBCode [url = www.apple.com] Apples Website [/ url] tun können. Hier

3

ist Codebeispiel Hyperlink UILabel: Quelle: 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]; 
}