我已经找到了一些这个问题的解决方案(这是因为还有一个活动的动画).
但是当我在iPad应用程序中使用UIDocumentInteractionController时,我无法解决这个问题.
我的ViewController看起来像
MainViewController
– > ContainerView
在这个ContainerView我有一个Sidebar,从这个SideBar我想打开一个UIDocumentInteractionController.
我使用NSNotification,因为这个“MainViewController”应该处理来自不同视图的多个文件.
所以:(这是在我的MainViewController)
func openFile(notification: NSNotification){ fileUrl = notification.object as NSURL var documentInteractionController = UIDocumentInteractionController(URL: self.fileUrl!) documentInteractionController.delegate = self documentInteractionController.presentPreviewAnimated(false) } func documentInteractionControllerViewControllerForPreview(controller: UIDocumentInteractionController) -> UIViewController { return self }
但生病总会得到以下错误:
警告:QLRemotePreviewContentController的不平衡调用开始/结束外观转换
我不知道为什么应该没有动画,如果我打开另一个(模态)窗口,这里没有警告.
如果我使用延迟(例如5秒!),则会出现此警告.
编辑:发现我可能是我的ContainerView的问题.当我包含“ViewWillDissapear”和“ViewDidDisappear”不正确的错误在这里:
view will dissappear Unbalanced calls to begin/end appearance transitions for <QLRemotePreviewContentController: 0x7d35d400> viww Did dissapaer
有任何想法吗?提前致谢
解决方法
您的应用程序必须使用导航控制器.如果是这样,导航控制器必须是处理预览的交互的导航控制器,而不是其中的视图控制器.
使用self.navigationController替换documentInteractionControllerViewControllerForPreview中的返回自身应该可以解决问题.但是,您需要安全地打开navigationController.请参阅下面的完整方法:
func documentInteractionControllerViewControllerForPreview(controller: UIDocumentInteractionController) -> UIViewController { if let navigationController = self.navigationController { return navigationController } else { return self } }
Cudos to @staxim为Objective-C解决方案!