UIPrintInteractionController未在iPad

时间:2015-04-24 23:04:57

标签: ios objective-c iphone ipad

我试图从iPhone和iPad上运行的应用程序进行打印。 iPhone部分打印没有问题。但是,每当我点击打印按钮时,我都没有弹出窗口允许我选择打印机并发送作业。

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

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

我已经证实它至少认为它正在呈现。我为pic生成了高度,宽度和原点,但是我无法看到它。任何帮助都会很棒,因为这是这个应用程序的最后一块拼图。

谢谢!

- (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];
    }
}

2 个答案:

答案 0 :(得分:1)

您需要传入较小的rect。您无法传递视图控制器视图的rect。弹出窗口显示在传入矩形的周边。如果rect填满屏幕,弹出窗口将显示在屏幕外。 rect应该是一个相对较小的东西,如按钮或其他小视图的矩形,这样popover的指针可以触及rect的边缘,其余的popover可以适合屏幕。

答案 1 :(得分:0)

请将以下代码移至您的.h文件。

UIPrintInteractionController *pic;

因为当方法完成时,pic对象将被释放,因此可能导致问题。

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

希望这会对你有所帮助。