我遇到了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];
}
无论如何,当用户触摸打印按钮,然后再触摸按钮时,打印选项菜单不会消失,如下图所示:
此外,如果用户再次触摸打印选项,则选项弹出窗口将消失(但不会显示旧打印选项),并且将创建另一个打印选项弹出窗口。
事实上,如果用户触摸弹出窗口以外的东西,则只有第一个被解雇而旧的一个是空的,如下所示:
答案 0 :(得分:1)
我通过调用UIPrintInteractionController上的 dismissAnimated 方法解决了这个问题
- (IBAction)share:(id)sender {
[[UIPrintInteractionController sharedPrintController] dismissAnimated:NO];
// remainder of share method code
}
您可能希望将解雇代码(UIPrintInteractionController和DocumentInteractionController)分解为单独的方法,只需在 share 方法中调用它即可。我遇到了一个问题,在iPad上没有以纵向模式打印菜单,因此我添加了一个调用以在 viewWillDisappear 中将其关闭。