2011-12-06 15 views

Respuesta

12

Como se señala en this answer, se puede establecer la propiedad dataDetectorTypes del UITextView:

textview.editable = NO; 
textview.dataDetectorTypes = UIDataDetectorTypeAll; 

También debe ser capaz de establecer los detectorTypes en Interface Builder.

De Apple documentation:

UIDataDetectorTypes

Defines the types of information that can be detected in text-based content. 

enum {  
    UIDataDetectorTypePhoneNumber = 1 << 0, 
    UIDataDetectorTypeLink   = 1 << 1,  
    UIDataDetectorTypeAddress  = 1 << 2,  
    UIDataDetectorTypeCalendarEvent = 1 << 3,  
    UIDataDetectorTypeNone   = 0,  
    UIDataDetectorTypeAll   = NSUIntegerMax 
}; typedef NSUInteger UIDataDetectorTypes; 

clic en la dirección de correo electrónico en su UITextView debe entonces abrir automáticamente la aplicación de correo.

En una nota lateral, si desea enviar el correo electrónico desde su propia aplicación, puede utilizar el MFMailComposeViewController.

Tenga en cuenta que, para que se muestre MFMailComposeViewController, la aplicación de correo debe estar instalada en el dispositivo y tener una cuenta vinculada a ella, de lo contrario, su aplicación se bloqueará.

Así se puede comprobar esto con [MFMailComposeViewController canSendMail]:

// Check that a mail account is available 
    if ([MFMailComposeViewController canSendMail]) { 
     MFMailComposeViewController * emailController = [[MFMailComposeViewController alloc] init]; 
     emailController.mailComposeDelegate = self; 

     [emailController setSubject:subject]; 
     [emailController setMessageBody:mailBody isHTML:YES]; 
     [emailController setToRecipients:recipients]; 

     [self presentViewController:emailController animated:YES completion:nil]; 

     [emailController release]; 
    } 
    // Show error if no mail account is active 
    else { 
     UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"You must have a mail account in order to send an email" delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", @"OK") otherButtonTitles:nil]; 
     [alertView show]; 
     [alertView release]; 
    } 

MFMailComposeViewController Class Reference

+0

Gracias Mutix. – Arun

1

Además del código anterior, una vez que el usuario ha pulsado el envío o cancelar los botones que se necesitan para despedir a la vista de correo electrónico modal . El protocolo MFMailComposeViewControllerDelegate incluye un método llamado "didFinishWithResult". Este método se llamará automáticamente cuando la vista se cierre. Sin embargo, si no lo implementa, no pasará nada & la vista modal se mantendrá, ¡poniendo su aplicación en punto muerto!

El siguiente código se requiere como mínimo:

- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{ 

    // Close the Mail Interface 
    [self dismissViewControllerAnimated:YES completion:NULL]; 
} 
Cuestiones relacionadas