iPad 中未显示 UIPrintInteractionController

UIPrintInteractionController not displaying in iPad

我正在尝试从在 iPhone 和 iPad 上运行的应用程序进行打印。 iPhone 部分打印没有问题。但是,每当我按下打印按钮时,都不会弹出允许我 select 打印机并发送作业的窗口。

调用它的视图是导航控制器中的常规 UIView(如果有任何影响的话)。

通过 IBAction 调用它的按钮是分段控件的一部分,因为这似乎是我在导航栏中获得除后退按钮之外的三个按钮的最佳方式。我不认为这是按钮,因为正如我所说,它适用于 iPhone 版本。

我已经确认它至少认为它正在呈现。我为图片生成了高度、宽度和原点,但我看不到它。任何帮助都将非常有用,因为这是此应用程序的最后一块拼图。

谢谢!

- (void)printStory
{
    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
    pic.delegate = self;

    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.jobName = @"My Great Prompt";
    pic.printInfo = printInfo;

    NSString *msgBody = [NSString stringWithFormat:@"%@%@%@", self.summaryLabel.text, @"\n\n", self.storyEditorTextView.text];


    UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc]
                                                 initWithText:msgBody];
    textFormatter.startPage = 0;
    textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins
    textFormatter.maximumContentWidth = 6 * 72.0;
    pic.printFormatter = textFormatter;
    pic.showsPageRange = YES;

    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
        if (!completed && error) {
            NSLog(@"Printing could not complete because of error: %@", error);
        }
    };

    if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) {
        [pic presentFromRect:self.view.frame
                      inView:self.view
                    animated:YES
           completionHandler:completionHandler];
        }
    else {
        [pic presentAnimated:YES completionHandler:completionHandler];
    }
}

请将以下代码移动到您的 .h 文件中。

UIPrintInteractionController *pic;

因为当方法完成时,pic 对象将被释放,所以可能是导致问题的原因。

并且您传递的矩形应该是您使用的按钮或段的位置。

希望对您有所帮助。

您需要传入一个较小的rect。您不能传入视图控制器视图的 rect 。弹出窗口显示在传入矩形的周边周围。如果 rect 填满屏幕,则弹出窗口显示在屏幕外。矩形应该相对较小,例如按钮或其他小视图的矩形,以便弹出窗口的指针可以触摸矩形的边缘,并且弹出窗口的其余部分可以适合屏幕。