Apple的UIDocumentInteractionController文档presentOpenInMenuFromBarButtonItem:animated:方法声明"如果没有支持打开文档的注册应用程序,文档交互控制器不会显示菜单." 在我的应用程序中,我想显示一个按钮,当且仅当设备上有应用程序打开它时.(我只希望按钮弹出一个菜单来打开文件;我不想要QuickLook,复制或打印).事实上,如果按钮在那里,但没有注册可以打开相关文件的应用程序,则用户会获得令人不满意的按钮体验,该按钮在点按时不会执行任何操作.
那么 - 我能否知道是否有任何/不支持打开特定文档类型的注册应用程序?显然,UIDocumentInteractionController实例可以找到它.是否有公共API方法可以找到它?
Obl*_*ely 11
好的,更多的研究表明stackoverflow用户frenchkiss-dev有一个解决方案 - 源于比我更仔细地阅读文档和一些横向思维.我的代码基于frenchkiss-dev的答案,位于ViewDidAppear方法中,如果打开然后关闭打开的文件菜单(没有动画)则会禁用我的按钮,这表明没有可以处理打开文件的应用程序.此代码段的上下文是已在viewDidLoad中设置了UIDocumentInteractionController,并通过[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];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3565 次 |
| 最近记录: |