Xcode 11.2.1
MFMailComposeViewControllerのmailComposeController デリゲートメソッドが呼ばれず、解決に苦労しています。
アプリへの問い合わせ対応のために、画面のViewControllerとは別の、TOiawaseクラスにdelegateを設定しています。
メールの作成画面は表示できるのですが、メール送信後にメール作成画面が閉じません。
呼び出し側(端折りました)
Swift
1import UIKit 2import PKHUD 3import Common 4 5 6 7 8 9 10class ConfigTableViewController: UITableViewController , SKStoreProductViewControllerDelegate 11 // 2019.9.3 フォントと中央揃えを追加 start 12 ,UINavigationControllerDelegate, /*AdmobRewarder*/AdMobManagerRewarder,UIPopoverPresentationControllerDelegate,ColorPickerViewDelegate 13 // 2019.9.3 フォントと中央揃えを追加 end 14{ 15 16 var t : Toiawase? 17 18 19 var tapped:IndexPath = IndexPath(row: 0, section: 0) 20 21 22 23 override func viewDidLoad() { 24 super.viewDidLoad() 25 t = Toiawase(parent: self) 26 27 28 } 29 30 31 32 33 // セルがタップされた 34 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 35 36 if indexPath.section == 3 { 37 switch indexPath.row { 38 case 0: // 開発者の他のアプリを見る 39 appStoreDialog() 40 break 41 case 1: // Twitterで問い合わせ 42 t?.fuguaiHoukokuForTwitter() 43 break 44 case 2: // メールで問い合わせ 45 t?.fuguaiHoukokuForMail() 46 break 47 default: break 48 49 } 50 } 51 tableView.deselectRow(at: indexPath, animated: true) 52 } 53 54 55}
呼び出される側
Swift
1import Foundation 2import MessageUI // メールを送るために必要 3 4public class Toiawase : NSObject , MFMailComposeViewControllerDelegate{ 5 var parent : UIViewController? 6 7 public init(parent: UIViewController) { 8 self.parent = parent 9 } 10 11 12 public func fuguaiHoukokuForMail() { 13 // メールを送信できるかチェック 14 if MFMailComposeViewController.canSendMail()==false { 15 print("Email Send Failed") 16 return 17 } 18 let mailViewController = MFMailComposeViewController() 19 let toRecipients = ["hogehoge@gmail.com"] //Toのアドレス指定 20 21 mailViewController.mailComposeDelegate = self 22 mailViewController.setSubject("不具合報告/機能追加要望") 23 mailViewController.setToRecipients(toRecipients) //Toアドレスの表示 24 self.parent?.present(mailViewController, animated: true, completion: nil) 25 26 } 27 28 29 // 呼ばれない! 30 public func mailComposeController(controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { 31 switch result { 32 case .cancelled: 33 print("キャンセル") 34 break 35 case .saved: 36 print("下書き保存") 37 break 38 case .sent: 39 print("送信成功") 40 break 41 default: 42 print("送信失敗") 43 } 44 controller.dismiss(animated: true, completion: nil) 45 } 46 47}
delegateが呼ばれないことのデバッグのやり方として何か有益なやり方はないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/19 03:10