我创建了一个IOS应用程序来发送电子邮件。我发现的问题是在IOS模拟器上测试我的应用程序。当我点击我的UIButton (IBOulet UIButton)时,我在AppDelegate.swift文件中接收到SIGABRT错误突出显示类。下面没有显示错误代码。另外,我在视图控制器上检查了我的oulet连接,没有感叹号("!")或者现有的副本。
@IBOutlet var Subject: UITextField!
@IBOutlet var Body: UITextView!
override func viewDidLoad(){
super.viewDidLoad()
Subject.delegate = self
Body.delegate = self
}
@IBAction func SendEmail (_sender: Any)
{
let picker = MFMailComposeViewController()
picker.mailComposeDelegate = self
if let subjectText = Subject.text {
picker.setSubject(subjectText)
}
picker.setMessageBody(Body.text, isHTML: true)
present(picker, animated: true, completion: nil)
}
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
dismiss(animated: true, completion: nil)
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
Body.text = textView.text
if text == "\n" {
textView.resignFirstResponder()
return false
}
return true
}
}
发布于 2019-01-31 10:36:57
在显示您的MFMailComposeViewController.canSendMail()
之前,您没有调用MFMailComposeViewController
。来自canSendMail()文档:
在尝试显示邮件组合接口之前,应该调用此方法。如果它返回false,则不能显示邮件组合接口。
如果您没有设置用于在设备上发送邮件的电子邮件地址,canSendMail()
将返回false
。
尝试:
@IBAction func SendEmail (_sender: Any)
{
if(!MFMailComposeViewController.canSendMail()) {
if let url = URL(string: "mailto:" + yourEmailAddress) {
UIApplication.shared.openURL(url)
}
}
let picker = MFMailComposeViewController()
picker.mailComposeDelegate = self
if let subjectText = Subject.text {
picker.setSubject(subjectText)
}
picker.setMessageBody(Body.text, isHTML: true)
}
您检查是否可以显示MFMailComposerViewController
,如果不能,您将打开Mail
应用程序。
https://stackoverflow.com/questions/54458532
复制相似问题