1

我有一个简单的 iOS 应用程序,可以将收据打印到 STAR-TSP650II AirPrint 打印机。打印成功,但我需要将作业打印在 1 页上,因为它是收据......并且打印机能够这样做。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;
} 
4

2 回答 2

2

我找到了我的问题的答案。

一定是 STAR 没有正确配置 AirPrint 的打印机。

他们有 2 个 iOS SDK;Standard and Legacy.. Legacy SDK 具有我剪纸所需的所有功能。如果您遇到类似情况,请查看制造商是否有适用于 AirPrint 的 SDK。

于 2019-02-04T13:54:18.233 回答
-1

您编写协议/委托方法的类/控制器,试试这个

[self setDelegate:controller];

并告诉我它是否不起作用。

于 2019-02-01T11:16:32.633 回答