2016-08-19 46 views
4

我創建了一個簡單的應用程序,其使用如下所示的UIActivityViewController當我選擇「打印」菜單並取消它時,UIActivityViewController.completionWithItemsHandler不會在iOS 10.0上調用

let text = "Test Text" 
    let printData = UISimpleTextPrintFormatter(text: text) 
    let vc = UIActivityViewController(activityItems: [text, printData], applicationActivities: nil) 
    vc.completionWithItemsHandler = { (type,completed,items,error) in 
     print("completed. type=\(type) completed=\(completed) items=\(items) error=\(error)") 
    } 

    vc.modalPresentationStyle = .popover 
    vc.popoverPresentationController?.sourceView = self.openActivityButton 
    vc.popoverPresentationController?.sourceRect = self.openActivityButton.bounds 
    vc.popoverPresentationController?.permittedArrowDirections = .up 
    vc.popoverPresentationController?.delegate = self 

    self.present(vc, animated: true) {() in 
    } 

我在iOS 10(Xcode 8.0 beta 6)上運行這個應用程序。

  • 當我關閉活動對話框時,調用completionWithItemsHandler
  • 當我選擇「複製」活動時,調用completionWithItemsHandler
  • 當我選擇「郵件」活動並取消它時,completionWithItemsHandler被調用。
  • 但是,當我選擇「打印」活動並取消它時,completionWithItemsHandler而不是調用。發生在iOS上10

這種奇怪的行爲,但不是發生在iOS9(處理程序被稱爲上iOS9)

這是iOS的10的錯誤嗎?如果是這樣,是否有任何解決方法來檢測UIActivityController是否被解僱?

我推這個示例應用程序上https://github.com/kunichiko/ios10-activity-bug

回答

3

我也有類似的問題。在我的情況下,我注意到完成處理程序沒有被調用,因爲UIActivityController已經被解僱和解除分配。我所做的只是添加一個屬性來保存一個強有力的參考,並將其設置爲零。然後完成處理程序被正確調用。

相關問題