0

私が遭遇した本当にイライラすることの 1 つは、一度に複数の AirPrint プリンターに印刷できないことです。複数のアイテムを 1 つのプリンターに出力することと混同しないでください。

例:
AirPrint プリンターが 3 台あります。
各プリンターは、何かを印刷する必要があります..次々と。

UIPrinter オブジェクトを既に取得している場合は、次のように呼び出します。

- (BOOL)printToPrinter:(UIPrinter *)printer 
 completionHandler:(UIPrintInteractionCompletionHandler)completion;

完了メソッドでは、通常のプロセスは、次のように完了メソッドで次のジョブを起動することです。

- (void)printAllJobs

    //  let's use an example printer url:
    UIPrinter *printer = [[UIPrinter alloc] initWithURL:[NSURL URLWithString:@"ipps://mycomputer.:863/printers/label"]];

    //  get the printer interaction controller:
    UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];

    //  now print:
    [controller printToPrinter:printer completionHandler:^(UIPrintInteractionController * _Nonnull printInteractionController, BOOL completed, NSError * _Nullable error) {

        //  here.. you would check if the job is complete:
        if (completed) {

            //  print to the next printer:
            //  THIS METHOD GETS FIRED BUT DOESN'T ACTUALLY PRINT
            [self printToNextPrinter];

        }

    }

}

- (void)printToNextPrinter {

    //  create next printer:
    UIPrinter *nextPrinter = [[UIPrinter alloc] initWithURL:[NSURL URLWithString:@"ipps://mycomputer.:863/printers/roller"]];

    //  get controller:
    UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];

    //  print:
    [controller printToPrinter:printer completionHandler:^(UIPrintInteractionController * _Nonnull printInteractionController, BOOL completed, NSError * _Nullable error) {

        //  this never gets executed.

    }

}
4

1 に答える 1

1

私が発見したこと:
これが発生すると、注目すべきことが 1 つあります。画面に「Printing to.. xxx」という UIAlertController が表示され、印刷の進行状況が示されます。

解決策:
解決策は、画面にアラートが表示されているかどうかを 2 秒ごとに確認することです。表示されている場合は、同じ方法を繰り返します。表示されていない場合は、次の印刷ジョブを起動します。Apple は警告なしのバックグラウンド印刷を許可していないようです。これが唯一の方法です..混乱する CUPS に飛び込む以外は。

于 2019-01-03T16:22:43.697 に答える