У меня есть простое приложение для 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;
}