0

iPad で印刷するようにコーディングし、さまざまなドキュメントを確認しました。私のコードは正しいように見えますが、コントローラーが表示されてキャンセルをクリックすると、次のエラーでクラッシュします: メイン スレッドまたは Web スレッド以外のスレッドから Web ロックを取得しようとしました。これは、セカンダリ スレッドから UIKit を呼び出した結果である可能性があります。現在クラッシュ中...

dispatch_async を追加しようとしましたが、役に立ちませんでした。これは私のコードです:

UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
printInfo.jobName = self.title;

    
UIPrintInteractionController *pc = [UIPrintInteractionController sharedPrintController];
pc.delegate = (id <UIPrintInteractionControllerDelegate>)self;
pc.printInfo = printInfo;

UIViewPrintFormatter *printFormatter = [self.webView viewPrintFormatter];
printFormatter.startPage = 0;
pc.printFormatter = printFormatter;



__weak SnaglistPrintViewController *weakSelf = self;

UIPrintInteractionCompletionHandler completionHandler =
^(UIPrintInteractionController *printController, BOOL completed,
  NSError *error) {
    dispatch_async( dispatch_get_main_queue (), ^{
    NSLog(@"Handler completed: %d", completed);
            if (!completed && error) {
              NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, (unsigned int)error.code);
            }
            else {
                [weakSelf back];
            }
    } );
    };

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    [pc presentFromRect:CGRectZero inView:self.view animated:YES completionHandler:completionHandler];


}
4

0 に答える 0