Метод делегата UIPrinterCutterBehavior никогда не вызывался - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть простое приложение для iOS, которое распечатывает чеки на принтер STAR-TSP650II AirPrint.Отпечатки выполнены успешно, но мне нужно, чтобы задания были напечатаны на 1 странице, поскольку это квитанция ... и принтер способен это сделать.Есть два метода делегата для AirPrint:

- (CGFloat)printInteractionController:(UIPrintInteractionController *)printInteractionController 
                cutLengthForPaper:(UIPrintPaper *)paper;
- (UIPrinterCutterBehavior)printInteractionController:(UIPrintInteractionController *)printInteractionController 
                             chooseCutterBehavior:(NSArray *)availableBehaviors;

Я не могу заставить эти методы вызываться.Я попытался поместить точки останова и журналы в методы, чтобы увидеть, если они вызваны, но нет.Вот мой код:

#pragma mark    -   Print:

- (void)printReceipt:(UIPrinter *)printer {

    NSURL *receiptURL                           =   [NSURL URLWithString:@"https://myurl.com/printer"];
    UIPrintInteractionController *controller    =   [UIPrintInteractionController sharedPrintController];
    [controller setDelegate:self];
    [controller setPrintInfo:[UIPrintInfo printInfo]];
    [controller setPrintingItem:receiptURL];

    //  contact:
    [printer contactPrinter:^(BOOL available) {

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



        }];

    }];

}

- (CGFloat)printInteractionController:(UIPrintInteractionController *)printInteractionController cutLengthForPaper:(UIPrintPaper *)paper {
    NSLog(@"this never gets called.");
    return CGFLOAT_MAX;
}
- (UIPrinterCutterBehavior)printInteractionController:(UIPrintInteractionController *)printInteractionController chooseCutterBehavior:(NSArray *)availableBehaviors {
    NSLog(@"this never gets called either.");
    return UIPrinterCutterBehaviorCutAfterEachJob;
} 

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Я нашел ответ на свой вопрос.

Должно быть, это STAR, который не настроил свой принтер с AirPrint должным образом.

У них 2 iOS SDK;Стандарт и Legacy ... Legacy SDK обладает всеми функциями, необходимыми для резки бумаги.Если вы столкнулись с чем-то подобным, посмотрите, есть ли у производителя SDK для AirPrint.

0 голосов
/ 01 февраля 2019

Класс / Контроллер, в котором вы написали метод протокола / делегата, попробуйте это

[self setDelegate:controller];

и скажите мне, если он не работает.

...