私はSwiftアプリケーションから電子メールを送信したいとうまく動作し、電子メールを送信します。MFMailComposeViewControllerを閉じるには?
それでも、電子メールを送信した後、レイアウトは終了しません。私は電子メールを送信した後にレイアウトを終了したい。また、[キャンセル]、[下書きを削除]または[下書き保存]ボタンを押すと、この動作が必要になります。
これは私が(ボタンを押した後)、電子メールを送信する必要があるコード:
@IBAction func btnSendEmailAction(_ sender: AnyObject) {
let composeVC = MFMailComposeViewController()
composeVC.mailComposeDelegate = self
composeVC.setToRecipients(["[email protected]"])
composeVC.setSubject("Hello!")
composeVC.setMessageBody("Hello World!", isHTML: false)
self.present(composeVC, animated: true, completion: nil)
}
func mailComposeController(controller: MFMailComposeViewController,
didFinishWithResult result: MFMailComposeResult, error: NSError?) {
switch result {
case MFMailComposeResult.cancelled:
controller.dismiss(animated: true, completion: nil)
break
case MFMailComposeResult.sent:
controller.dismiss(animated: true, completion: nil)
break
case MFMailComposeResult.failed:
controller.dismiss(animated: true, completion: nil)
break
default:
break
}
controller.dismiss(animated: true, completion: nil)
}
が、私はキャンセルまたは送信ボタンを押すと、レイアウトが終了しません。
私はこの問題に関する多くの質問があることを知っていますが、私はそれらの多くを見て、これはいくつかの組み合わせから得ることができるコードです。それらのほとんどはSwiftではなくObjectiveになっていることに注意してください(また、メソッドが存在しないこともあります)。
例:iPhone: How to Close MFMailComposeViewController?
が、私は自分のコードに何かが足りないのですか?下書き削除と下書きイベントを検出するにはどうすればよいですか?
ありがとうございます!
あなたはすべてのケースでは、 'controller'を却下するつもりなら、なぜスイッチを取らないと、単に' controller.dismissを持っている(アニメーション:真、完了を:ゼロ) ' – Adrian
@アドリアンはコントローラを却下しなかったので、私は別々に各イベントに焦点を当ててみました。 –
@Anish웃いあなたはどういう意味ですか? –