2013-02-16 10 views
8

Credo che questa domanda sia stata posta e risposta prima, ma non ho potuto trovarla. Vedo una risposta che punta a Fancy Label e Three20, ma non sono proprio quello che voglio, o probabilmente ho perso alcuni punti.iOS come rendere l'indirizzo e-mail in un'etichetta cliccabile

Fondamentalmente, voglio ottenere il feedback degli utenti delle app, quindi scriverò in una grande etichetta, come blah blah, mandami un'email a [email protected] e blah blah di più. Voglio che l'indirizzo email sia selezionabile e apri il compositore di email in modo che gli utenti possano modificarlo e inviarlo.

Questo è tutto ciò di cui ho bisogno. Come ottenerlo? Grazie.

+3

uso UITextView e rendere modificabile il testo su false .. –

+0

Uso MFMailComposeViewController: http://stackoverflow.com/questions/7087199/xcode-4-ios-send-an-email-using-smtp-from-inside-my-app – jdb1a1

risposta

1

Webview using html/mailto: anchor dovrebbe funzionare bene per questo ... potrebbe essere necessario adattarlo alla roba predefinita di iOS ma sì.

2

Questo è piuttosto semplice,

creare una presa di etichetta nel file h

@interface ContactUsViewController : UIViewController<MFMailComposeViewControllerDelegate> 

@property (strong, nonatomic) IBOutlet UILabel *mail1Lbl; 

e collocare il codice del file in.m

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UITapGestureRecognizer* mail1LblGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(mail1LblTapped:)]; 
    // if labelView is not set userInteractionEnabled, you must do so 
[mail1Lbl setText:@"[email protected]"]; 
    [mail1Lbl setUserInteractionEnabled:YES]; 
    [mail1Lbl addGestureRecognizer:mail1LblGesture]; 
} 

- (void)mail1LblTapped:(id)sender 
{ 
    if ([MFMailComposeViewController canSendMail]) 
    { 

     MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 
     mailer.mailComposeDelegate = self; 
     [mailer setSubject:@""]; 
     NSArray *toRecipients = [NSArray arrayWithObjects:@"[email protected]", nil]; 
     [mailer setToRecipients:toRecipients]; 
     NSString *emailBody = @""; 
     [mailer setMessageBody:emailBody isHTML:NO]; 
     mailer.navigationBar.barStyle = UIBarStyleBlackOpaque; 
     [self presentModalViewController:mailer animated:YES]; 

    } 
    else 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure" 
                 message:@"Your device doesn't support the composer sheet" 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:nil]; 
     [alert show]; 
    } 
} 
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ 
    switch (result) 
    { 
     case MFMailComposeResultCancelled: 
      NSLog(@"Mail cancelled: you cancelled the operation and no email message was queued."); 
      break; 
     case MFMailComposeResultSaved: 
      NSLog(@"Mail saved: you saved the email message in the drafts folder."); 
      break; 
     case MFMailComposeResultSent: 
      NSLog(@"Mail send: the email message is queued in the outbox. It is ready to send."); 
      break; 
     case MFMailComposeResultFailed: 
      NSLog(@"Mail failed: the email message was not saved or queued, possibly due to an error."); 
      break; 
     default: 
      NSLog(@"Mail not sent."); 
      break; 
    } 
    // Remove the mail view 
    [self dismissModalViewControllerAnimated:YES]; 
} 
+0

Correggimi se sbaglio, ma farlo in questo modo rende TUTTA l'etichetta cliccabile, penso che vogliono solo l'email indirizzo cliccabile e blu come un collegamento ipertestuale html (così hanno descritto.) – Holyprin

+0

sì, @ Holyprin questo renderà l'intera etichetta cliccabile, ma la proprietà di sfondo dell'etichetta è clearcolor così il riempimento dell'utente come solo il testo è selezionabile e per il carattere blu può impostare il colore del testo blu. – Dilip

+0

Non ho capito. L'etichetta non è solo un pulsante? L'indirizzo email sarà in un paragrafo. –

7

Si potrebbe utilizzare UITextView come segue:

UITextView *myView = [[UITextView alloc] initWithFrame: CGRectMake(0, 0, 300, 50)]; 
    myView.text = @"this is http://google.com link"; 
    myView.editable = NO; 
    myView.dataDetectorTypes = UIDataDetectorTypeLink;  
    //myView.message.dataDetectorTypes = UIDataDetectorTypePhoneNumber|UIDataDetectorTypeLink; for multiple data detection 
    [self.view addSubview:myView]; 
    [myView release]; 

per selezionare più di un rilevamento di dati:

enter image description here

+0

Ero solo io? StackOverflow sembrava inattivo da un po 'ora. Ad ogni modo, @BaZinga, usa il tuo metodo, non vedo il testo http://google.com diventare cliccabile. Devo inserire delegato per la visualizzazione di testo nel file .h? –

+0

Sto creando la textview in modo dinamico che puoi creare mettendo il controllo anche alla tua vista ed è tutto a posto per me. – KDeogharkar

+0

dove stai mettendo questo codice? – KDeogharkar

1

È possibile utilizzare NSAttributedString per lo stesso. L'utilizzo di questo tipo di stringa consente di risparmiare un sacco di tempo. Ma prima di usare questo devi conoscere la posizione esatta del testo. Conoscendo la posizione e la lunghezza è possibile personalizzare facilmente quella stringa. Vedi questo link per scaricare il progetto di esempio. NSAttributed string. Ma se si utilizza iOS 6, non è necessario utilizzare questo codice di esempio. Puoi utilizzare direttamente NSAttributedString. Perché in ios6 UILabel supporta questo tipo di stringa.

lbl.aatributText = @"Your NSAttributed string". 

Edit: Ecco alcuni link che è possibile seguire: 1. Create tap-able "links" in the NSAttributedString of a UILabel? 2. Objective-C UILabel as HyperLink 3. how to make a specific word touchable for its meaning in a text?

+1

la stringa attribuita rende l'indirizzo di posta elettronica blu, ma non selezionabile, giusto? –

+0

Non sono sicuro, ma vedendo questo link, ho avuto l'idea che possiamo farlo usando questa stringa. Vedi il link alla discussione. http://www.cocoabuilder.com/archive/cocoa/241888-hyperlinks-in-nsattributedstring.html –

+0

vedere questo: http://stackoverflow.com/questions/1256887/clickable-links-in-uilabel –

Problemi correlati