我在实现 - (BOOL)application:openURL 并使用 UIDocumentInteractionController 将 PDF 文件从应用程序导出到另一个应用程序时遇到问题。
(1) 目标应用程序只显示导入的 PDF 文件的 URL(在标签中)。
这是 AppDelegate.m 中的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc] initWithText:@"No file is imported."];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication: (NSString *)sourceApplication annotation:(id)annotation
{
if (url != nil)
{
[self.viewController handleOpenURL:url];
return YES;
}
else
{
[self.viewController handleOpenURL:[NSURL fileURLWithPath:@"AppDelegate.h"]];
return NO;
}
}
方法“handleOpenURL”只需获取 url 并在视图控制器中放入标签并显示警报:
- (void)handleOpenURL:(NSURL *)fileURL
{
_text = [fileURL absoluteString];
self.lblText.text = _text;
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:_text delegate:self cancelButtonTitle:nil otherButtonTitles:nil, nil];
[alert show];
}
(2) 在源应用程序中,我简单地使用 UIDocumentInteractionController 列出“打开方式”选项(我的目标应用程序在列表中显示得很好)
这是代码:
_docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:attachmentFile]];
_docInteractionController.delegate = self;
_docInteractionController.UTI = [_extensionUTIs objectForKey:[[attachmentFile pathExtension] lowercaseString]];
BOOL opened = [_docInteractionController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:NO];
(3) 问题: - 当我选择目标应用程序(从“打开方式”列表中)时,模拟器从源应用程序切换到目标应用程序正常,但看起来 application:openURL 方法没有被调用,因为标签保持初始状态(没有文件已导入。)并且不显示警报视图。
请告诉我这里有什么问题?
提前致谢。