0

У меня ошибка с небольшим количеством кода. Я новичок в этом, и я пытаюсь научить себя. Я нахожу большинство своих ответов в Интернете, но, похоже, не могу найти ничего об этой конкретной проблеме. Я хочу отправить электронное письмо в приложение, но в любое время, когда я нажимаю кнопку электронной почты, MFMailViewController не появляется. Это похоже на то, что мой UIButton не работает. Но я знаю, что у меня это как IBAction. Вот мой код до сих пор. Буду признателен за любую оказанную помощь.UIButton не вызывает MFMailViewController

import UIKit 
import MessageUI 

class RequestService: UIViewController,MFMailComposeViewControllerDelegate { 
    @IBOutlet weak var CustomerName: UITextField! 
    @IBOutlet weak var emailButton: UIButton! 

    @IBAction func sendEmail(_ sender: UIButton) { 
     if !MFMailComposeViewController.canSendMail() { 
      print("Mail services are not available") 

      let ComposeVC = MFMailComposeViewController() 
      ComposeVC.mailComposeDelegate = self 

      ComposeVC.setToRecipients(["[email protected]"]) 
      ComposeVC.setSubject("New Support Ticket") 
      ComposeVC.setMessageBody(CustomerName.text!, isHTML: false) 

      self.present(ComposeVC, animated: true, completion: nil) 
     } 

     func mailComposeController(controller: MFMailComposeViewController,didFinishWithResult result:MFMailComposeResult, error: NSError?) { 
      // Check the result or perform other tasks. 
      // Dismiss the mail compose view controller. 
      controller.dismiss(animated: true, completion: nil) 
     } 
    } 
} 
+0

Вы тестируете это в симуляторе? это работает только с реальным устройством iPhone. –

ответ

0

Вы сделали ошибку в синтаксисе в своей функции sendMail. Код, который вы отправили, откроет только контроллер просмотра, если устройство не может отправить. Измените его так:

@IBAction func sendEmail(_ sender: UIButton) { 
    if !MFMailComposeViewController.canSendMail() { 
     print("Mail services are not available") 
     return 
    } 

    let composeVC = MFMailComposeViewController() 
    composeVC.mailComposeDelegate = self 
    composeVC.setToRecipients(["[email protected]"]) 
    composeVC.setSubject("New Support Ticket") 
    composeVC.setMessageBody(CustomerName.text!, isHTML: false) 

    self.present(composeVC, animated: true, completion: nil) 
} 
+0

Почему вы продолжаете представлять почтовый композитор, даже если письмо не может быть отправлено? – rmaddy

+0

@rmaddy Исправлено, спасибо. –

+0

Вы, ребята, знаете свои вещи! Я просто изменил то, что вы сказали, и работает безупречно! –

0

Вы только попытка отобразить контроллер почты, если устройство не может отправить по электронной почте. Это наоборот.

@IBAction func sendEmail(_ sender: UIButton) { 
    if MFMailComposeViewController.canSendMail() { 
     print("Mail services are not available") 

     let ComposeVC = MFMailComposeViewController() 
     ComposeVC.mailComposeDelegate = self 

     ComposeVC.setToRecipients(["[email protected]"]) 
     ComposeVC.setSubject("New Support Ticket") 
     ComposeVC.setMessageBody(CustomerName.text!, isHTML: false) 

     self.present(ComposeVC, animated: true, completion: nil) 
    } 
} 

func mailComposeController(controller: MFMailComposeViewController,didFinishWithResult result:MFMailComposeResult, error: NSError?) { 
    // Check the result or perform other tasks. 
    // Dismiss the mail compose view controller. 
    controller.dismiss(animated: true, completion: nil) 
} 

И вам нужен метод делегата вне другого метода.

 Смежные вопросы

  • Нет связанных вопросов^_^