1

我在实现 - (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 方法没有被调用,因为标签保持初始状态(没有文件已导入。)并且不显示警报视图。

请告诉我这里有什么问题?

提前致谢。

4

2 回答 2

0

我使用这两种方法进行 facebook 集成来处理 openURL ......它工作正常。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [ [[HIFacebookConnect sharedGameObject] facebook] handleOpenURL:url];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [[[HIFacebookConnect sharedGameObject] facebook] handleOpenURL:url];
}
于 2012-08-17T15:08:49.977 回答
-1

只想将我的问题标记为已回答,因为我已经发现了故障。

更新:在启动 UIDocumentInteractionController 对象时不包括完整文件路径是我的错。

于 2013-06-21T08:44:47.923 回答