2

のドキュメントは、iOS用のPages.appで行われるのとほぼ同じ方法で、を標準スタックにプッシュするために使用できるを返すためにUIPrintInteractionControllerDelegate使用できることを示唆しているようですが、私の試みにもかかわらず、すべて私がなんとかやったのは、空のオブジェクトをスタックにプッシュすることだけで、それ以外はあまりありません。printInteractionControllerParentViewController:UIViewControllerUIPrintInteractionControllerUINavigationControllerUIViewController

これがどのように行われるか、またはそれがまったくできるかどうかについて何かアイデアを持っている人はいますか?

(明確にするために、私はプライベートAPIなどを使用するメソッドには興味がありません。)

4

1 に答える 1

3

Pagesと同様にNavigationControllerにプリンタオプションを表示しようとしても同じ問題が発生しました。
重要なのは、UIPrintInteractionControllerDelegateのprintInteractionControllerParentViewControllerを実装して、NavigationControllerを返すことです。
このメソッドは、UIPrintInteractionControllerの現在のメソッドからのみ呼び出されます。
UIPrintInteractionControllerDelegateに関するAppleドキュメント

いくつかのサンプルコード:

// Just some code to return a UIPrintInteractionController
// Important to set delegate to self
- (UIPrintInteractionController *)printContent {
UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
if  (pic && [UIPrintInteractionController canPrintURL:[self fileToPrint]]) {
    pic.delegate = self;
    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.jobName = @"OutputFile";
    printInfo.duplex = UIPrintInfoDuplexLongEdge;
    pic.printInfo = printInfo;
    pic.showsPageRange = YES;
    pic.printingItem = self.fileToPrint;
}
return pic;
}

デリゲートのprintInteractionControllerParentViewControllerメソッドを実装します。

// Implement the delegate method simply to return navigationController
- (UIViewController *)printInteractionControllerParentViewController:(UIPrintInteractionController *)printInteractionController{
return self.navigationController;
}

デリゲートは、UIPrintInterfaceControllerのPresentメソッドを実行した場合にのみ呼び出されます(例:presentFromRect:)。

// Need to call a present method to invoke the delegate method
[[self printContent] presentFromRect:[self.view frame] inView:self.view animated:NO completionHandler:completionHandler];
于 2012-12-30T21:38:48.153 に答える