2017-02-12 21 views
3

UIDocumentInteractionControllerでファイルを送信する処理を行っています。
ファイルの送信後に完了の警告を表示したいとします。
しかし、完了イベントを検出できないため、アラートを表示できません。
完了イベントを検出する方法を教えてください。DidEndSendingToApplicationが呼び出されていません

import UIKit 

class ViewController: UIViewController, UIDocumentInteractionControllerDelegate { 

// Document controller 
var dic:UIDocumentInteractionController?  
override func viewDidLoad() { 
    super.viewDidLoad() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


@IBAction func export(_ sender: Any) { 
    // url is sample. 
    let url = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory,.userDomainMask, true)[0]).appendingPathComponent("sample.txt") 

    dic = UIDocumentInteractionController(url: self.url) 
    dic?.delegate = self 
    dic?.presentOpenInMenu(from: (self.tabBarController?.tabBar.frame)!, in: self.view, animated: true) 
} 

// MARK: UIDocumentInteractionControllerDelegate methods 
// Open in menu presented/dismissed on document. Use to set up any HI underneath. 
public func documentInteractionControllerWillPresentOpenInMenu(_ controller: UIDocumentInteractionController) { 
    // Called 
    print("WillPresentOpenInMenu") 
} 

public func documentInteractionControllerDidDismissOpenInMenu(_ controller: UIDocumentInteractionController) { 
    // Called 
    print("DidDismissOpenInMenu") 
} 


// Synchronous. May be called when inside preview. Usually followed by app termination. Can use willBegin... to set annotation. 
public func documentInteractionController(_ controller: UIDocumentInteractionController, willBeginSendingToApplication application: String?) { 
    // Not Called 
    print("willBeginSendingToApplication") 
} 


public func documentInteractionController(_ controller: UIDocumentInteractionController, didEndSendingToApplication application: String?) { 
    // Not Called 
    print("didEndSendingToApplication") 

    // I want to display an alert of completion! 
    let alert = UIAlertController(title: "Completed", message: "", preferredStyle: .alert) 
    alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) 
    self.present(alert, animated: true, completion: nil) 
} 
} 

答えて

0

は残念ながら、代わりにそのアプリケーション(ノート、拡張、Airdrop)にナビゲートのオーバーレイとして示されているアプリのため、didEndSendingToApplicationは呼び出されません。唯一の方法は、documentInteractionControllerDidDismissOpenInMenuにアラートを表示することですが、送信されるファイルと閉じているメニューを区別することはできません

関連する問題