UIDocumentInteractionController和打印按钮问题:打印选项不会消失

时间:2013-07-09 09:54:17

标签: ipad cocoa-touch uidocumentinteraction

我遇到了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];

}

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

enter image description here

此外,如果用户再次触摸打印选项,则选项弹出窗口将消失(但不会显示旧打印选项),并且将创建另一个打印选项弹出窗口。

事实上,如果用户触摸弹出窗口以外的东西,则只有第一个被解雇而旧的一个是空的,如下所示:

enter image description here

1 个答案:

答案 0 :(得分:1)

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

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

    // remainder of share method code
}

您可能希望将解雇代码(UIPrintInteractionController和DocumentInteractionController)分解为单独的方法,只需在 share 方法中调用它即可。我遇到了一个问题,在iPad上没有以纵向模式打印菜单,因此我添加了一个调用以在 viewWillDisappear 中将其关闭。