从未调用过 UIPrinterCutterBehavior 委托方法
UIPrinterCutterBehavior delegate method never called
我有一个简单的 iOS 应用程序可以将收据打印到 STAR-TSP650II AirPrint 打印机。打印成功,但我需要将作业打印在一页上,因为它是一张收据……而且打印机能够这样做。 AirPrint 有 2 个委托方法,它们是:
- (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;
}
你写protocol/delegate方法的class/Controller,试试这个
[self setDelegate:controller];
并告诉我它是否不起作用。
我找到了问题的答案。
一定是 STAR 的打印机没有正确配置 AirPrint。
他们有 2 个 iOS SDK; Standard and Legacy.. Legacy SDK 具有我剪纸所需的所有功能。如果您遇到类似情况,请查看制造商是否有 AirPrint 的 SDK。
我有一个简单的 iOS 应用程序可以将收据打印到 STAR-TSP650II AirPrint 打印机。打印成功,但我需要将作业打印在一页上,因为它是一张收据……而且打印机能够这样做。 AirPrint 有 2 个委托方法,它们是:
- (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;
}
你写protocol/delegate方法的class/Controller,试试这个
[self setDelegate:controller];
并告诉我它是否不起作用。
我找到了问题的答案。
一定是 STAR 的打印机没有正确配置 AirPrint。
他们有 2 个 iOS SDK; Standard and Legacy.. Legacy SDK 具有我剪纸所需的所有功能。如果您遇到类似情况,请查看制造商是否有 AirPrint 的 SDK。