在我的 iOS 应用程序中,我有以下代码用于 AirPrinting 一个简单的 NSString。
#pragma mark - Print
-(IBAction)print:(id)sender {
UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
pic.delegate = self;
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
printInfo.jobName = @"Message";
pic.printInfo = printInfo;
UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc]initWithText:self.Message.text];
textFormatter.startPage = 0;
textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins
textFormatter.maximumContentWidth = 6 * 72.0;
pic.printFormatter = textFormatter;
pic.showsPageRange = YES;
void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if (!completed && error) {
NSLog(@"Printing could not complete because of error: %@", error);
}
};
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[pic presentFromBarButtonItem:sender animated:YES completionHandler:completionHandler];
} else {
[pic presentAnimated:YES completionHandler:completionHandler];
}
}
当我运行我的项目(测试它)时,这是我在 UIPrintInteractionController 上点击“打印”时在输出调试器窗口中遇到的错误:
Simulated\032InkJet\032@\032USER\032NAME\032iMac._ipp._tcp.local.: startJob: Unable to connect to printd: Connection refused
我在使用打印模拟器的 iOS 5.1 模拟器中收到此错误。为什么我会收到此错误?我感觉这与我使用打印模拟器的方式有关。
感谢您提供任何帮助,并且作为旁注,有人知道如何从 iPad 上的普通 UIButton 而不是 BarButtonItem 显示 UIPrintInteraction 控制器吗?
编辑:应该注意的是,在 iOS 6.0+ 中使用 Share Sheets 时会自动设置 AirPrint。