Wie öffne ich die Mail-App des iPhones, wenn ich auf einen E-Mail-Link in UITextView klicke? - ios, xcode

Ich bin neu in der iPhone Entwicklung.Ich habe eine UITextView in einer Xib. Dort zeige ich einen Link zur E-Mail-Adresse an. Ich möchte die E-Mail-Anwendung des iPhone öffnen, während ich auf diesen E-Mail-Link klicke. Wie kann ich das erreichen?

Antworten:

12 für die Antwort № 1

Wie in diese Antwortkannst du das einstellen dataDetectorTypes Eigentum der UITextView:

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

Sie sollten die detectorTypes auch im Interface Builder festlegen können.

Von Apple-Dokumentation:

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;

Ein Klick auf die E-Mail-Adresse in Ihrer UITextView sollte dann automatisch die Mail-Anwendung öffnen.

Wenn Sie die E-Mail in Ihrer App selbst senden möchten, können Sie den MFMailComposeViewController verwenden.

Beachten Sie, dass für die Anzeige des MFMailComposeViewControllers die Mail-App auf dem Gerät installiert sein muss und ein Konto damit verknüpft sein muss. Andernfalls stürzt Ihre App ab.

So können Sie dies überprüfen [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 Klassenreferenz


1 für die Antwort № 2

Zusätzlich zu dem obigen Code, sobald der Benutzer hatWenn Sie die Senden- oder Abbrechen-Taste drücken, müssen Sie die modale E-Mail-Ansicht schließen. Das Protokoll MFMailComposeViewControllerDelegate enthält eine Methode namens "didFinishWithResult". Diese Methode wird automatisch aufgerufen, wenn die Ansicht geschlossen wird. Wenn Sie es jedoch nicht implementieren, wird nichts passieren und die Modalansicht bleibt erhalten, was Ihre App zum Stillstand bringt!

Der folgende Code ist mindestens erforderlich:

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

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

Verwandte Fragen
Speisekarte