2012-05-08 63 views

回答

13

你可以去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 
} 
+0

這實際上是我想要做的。謝謝。 –

4

一種可能的解決方案是使用UIButtonUIButtonTypeCustom而不是UILabel。它看起來像一個標籤,可點擊。

您也可以考慮第三方實施,例如three20Fancy UILabels的TTLabel。

+0

謝謝你的幫助。 :) –

2

你只要檢查這個鏈接,這將有助於you.try一次,並告訴我們,如果它對你有幫助。

how to make a specific word touchable for its meaning in a text?

+0

謝謝。這很有幫助。 –

+0

再次感謝您。現在我想我可以用多種方式做UILabel/Hyperlink ..我發現rishi的答案更容易用作初學者。 –

+0

你知道,應用觸摸和手勢是最簡單的方法。好的,因爲你的願望只是爲了獲得幫助而不是爲了你的聲望。 – vishiphone

2

我發現一些代碼,超鏈接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]; 
}