2016-11-24 9 views
2

私のアプリケーションはPDFファイルを開くことができます。そこで私はPDFファイル用に登録しました。 mail-appからPDFファイルを開くと、アプリケーションが呼び出され、次の関数が呼び出されます。前のアプリに戻る(スウィフトアイオス)

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
     let rect = app.keyWindow?.rootViewController?.view.bounds 
     viewController.view.backgroundColor = UIColor.red 
     let picker = UIPickerView(frame: CGRect(x: 0, y: 100, width: (rect?.width)!, height: (rect?.height)!/3)) 
     picker.delegate = self 
     picker.dataSource = self 
     viewController.view.addSubview(picker) 
     let okButton = UIButton(frame: CGRect(x: 0, y: 100 + ((rect?.height)!/3), width: ((rect?.width)!/2) - 20, height: 30)) 
     okButton.setTitle("Ok", for: .normal) 
     okButton.addTarget(self, action: #selector(AppDelegate.endApp), for: .touchUpInside) 
     viewController.view.addSubview(okButton) 
     app.keyWindow?.rootViewController?.present(viewController, animated: true, completion: nil) 

     return true 
    } 

これは機能します。ユーザーが[OK]ボタンをクリックすると、私はmail-appに戻りたいと思う。これどうやってするの?私は、リンゴはあなたがアプリを切り替えることを許可していないことをお読みください。しかしwhatsAppがこれをやっている。

私はViewControllerを削除すると、それを試してみました:

viewController.view.removeFromSuperview() 

をしかし、私は唯一の黒い画面を取得します。常にコンビューを開きますスキーム、:

+0

) – Hasya

+0

このいけない:)あなたの答えとして、私は同じくらい役立ちます。この問題の解決策はありますか? – ReasyEasyPeasy

答えて

-1

私は次のコードでそれを作った:

viewController.dismiss(animated: false, completion: nil) 
let mailURL = NSURL(string: "message://")! 
     if UIApplication.shared.canOpenURL(mailURL as URL) { 
      UIApplication.shared.openURL(mailURL as URL) 
     } 

は私には十分厥。

ありがとうございます@ジェレミーあなたのリンクが私を助けました!これは、あなたが戻ってメールアプリviewController.view.removeFromSuperview(へ行くことに役立つことはありません

1

他のアプリケーションを起動する唯一の方法は、彼らのURLスキームを使用することです、メールを開くための唯一の方法は、MAILTOを使用することです。

let email = "[email protected]" 

let url = URL(string: "mailto:\(email)") 
UIApplication.sharedApplication().openURL(url) 

編集:このanswerはあなたが

+0

さて、Whatsappはどうしていますか? – ReasyEasyPeasy

+0

私の答えを編集しました、リンクを確認してください – Jeremy

-1

これは、あなたがそれはちょうどあなたのviewcontrolerとwindowが表示されている黒の色からビューを削除しますメールアプリviewController.view.removeFromSuperview()

に戻って助けにはなりません役立つかもしれません。

openURLを使用していてもメールアプリに戻る方法はありません。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto:"]]; 

これはメール作成者を開きますが、実質的にメールアプリに戻ることはできません。

スウィフト

let url = URL(string: "mailto:\[email protected]") 
UIApplication.sharedApplication().openURL(url) 

これは[email protected]として、送信者と電子メールの作曲を開きます。あなたは、ファイルを添付した電子メールの作曲を通してそれを送信したい場合

、コード以下のようにします。

輸入のUIKit 輸入MessageUI

class ViewController: UIViewController, MFMailComposeViewControllerDelegate { 

@IBAction func launchEmail(sender: AnyObject) { 

var emailTitle = "EmailTitle" 
var messageBody = "Email BodyFeature request or bug report?" 
var toRecipents = ["[email protected]"] 
var mc: MFMailComposeViewController = MFMailComposeViewController() 
mc.mailComposeDelegate = self 
mc.setSubject(emailTitle) 
mc.setMessageBody(messageBody, isHTML: false) 
mc.setToRecipients(toRecipents) 

self.presentViewController(mc, animated: true, completion: nil) 
} 

func mailComposeController(controller:MFMailComposeViewController, didFinishWithResult result:MFMailComposeResult, error:NSError) { 
    switch result { 
    case MFMailComposeResultCancelled: 
     print("Mail cancelled") 
    case MFMailComposeResultSaved: 
     print("Mail saved") 
    case MFMailComposeResultSent: 
     print("Mail sent") 
    case MFMailComposeResultFailed: 
     print("Mail sent failure: \(error?.localizedDescription)") 
    default: 
     break 
    } 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

} 
+1

まあ、Whatsappはどうしていますか? – ReasyEasyPeasy

+0

電子メールコンポーザーのみが開きます。メールアプリケーションにリダイレクトされません。 http://stackoverflow.com/questions/8821934/launch-apple-mail-app-from-within-my-own-app – Hasya

+0

それは本当ではありません。 whatsappでメールアプリケーションからファイルを開くと、このファイルを連絡先に送信できます。このファイルを連絡先に送信した後、WhatsAppが閉じられ、前に(ファイルと共に)郵送されたメールが表示されます。電子メール作曲家ではありません – ReasyEasyPeasy

関連する問題