Apple 的 UIDocumentInteractionController PresentOpenInMenuFromBarButtonItem:animated: 方法文档指出“如果没有注册的应用程序支持打开文档,则文档交互控制器不会显示菜单。”在我的应用程序中我想显示一个按钮当且仅当设备上有一个应用程序可以打开它。 (我只想要弹出菜单来打开文件的按钮;我不需要快速查看、复制或打印)。就目前情况而言,如果按钮在那里,但没有注册可以打开相关文件的应用程序,则用户会得到点击时不执行任何操作的按钮的不令人满意的体验。
那么 - 我能否查明是否有/没有注册的应用程序支持打开特定文档类型?显然,UIDocumentInteractionController 实例可以发现这一点。有没有公共 API 可以找到它?
好的,更多研究揭示了 stackoverflow 用户frenchkiss-开发 https://stackoverflow.com/users/267152/frenchkiss-dev has a solution https://stackoverflow.com/questions/4957980/how-to-check-if-uidocumentinteractioncontroller-will-fail-to-open-document-due-to- 来自比我更仔细地阅读文档和一些横向思考。我下面的代码基于 frenchkiss-dev 的答案,位于 ViewDidAppear 方法中,如果打开然后关闭打开的文件菜单(没有动画)显示没有可以处理打开文件的应用程序,则禁用我的按钮。此代码片段的上下文是 UIDocumentInteractionController 已在 viewDidLoad 中设置并通过 [self docInteractionController] 访问。
BOOL isAnAppToOpenURL = [[self docInteractionController] presentOpenInMenuFromRect:CGRectZero inView:[self view] animated: NO];
[[self docInteractionController] dismissMenuAnimated:NO];
if (!isAnAppToOpenURL)
{
// iOS think NO app is present on the device that
// can open the URL set on the UIDocumentInteractionController
[[self openFileButton] setEnabled:NO];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)