1

我遇到了 UIDocumentInteractionController 的问题。我能够通过 presentOptionsMenuFromBarButtonItem 正确显示弹出框。

当用户触摸 barbuttonitem 时,我触发以下方法:

- (IBAction)share:(id)sender {

   if (docIntController) {
      [docIntController dismissMenuAnimated:NO];
      docIntController = nil;
   }
   NSString *fileURL = [(Documents *)(self.detailItem) url];
   NSArray *subStrings = [fileURL componentsSeparatedByString:@"/"];
   NSString *filePath = [[self documentsDirectory] stringByAppendingPathComponent:[subStrings lastObject]];

   docIntController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:filePath]];
   docIntController.delegate = self;
   docIntController.UTI = @"com.adobe.pdf";

   [docIntController presentOptionsMenuFromBarButtonItem:sender animated:YES];

}

无论如何,当用户触摸打印按钮,然后再次触摸 barbutton 时,打印选项菜单不会消失,如下图所示:

在此处输入图像描述

此外,如果用户再次触摸打印选项,选项弹出框将消失(但不是旧的打印选项),并且将创建另一个打印选项弹出框。

实际上,如果用户在弹出框之外触摸以将其关闭,则只会关闭第一个并且旧的为空,如下所示:

在此处输入图像描述

4

1 回答 1

1

我通过调用UIPrintInteractionController 上的dismissAnimated方法解决了这个问题

- (IBAction)share:(id)sender {
    [[UIPrintInteractionController sharedPrintController] dismissAnimated:NO];

    // remainder of share method code
}

您可能希望将解除代码(UIPrintInteractionController 和 DocumentInteractionController)分解为一个单独的方法,然后在share方法中简单地调用它。我遇到了一个问题,即在 iPad 上的纵向模式下打印菜单没有关闭,所以我在viewWillDisappear中添加了一个调用来关闭它。

于 2013-09-17T16:48:27.897 回答