在我的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上的“Print”时,这是我在输出调试器窗口中得到的错误:
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表时会自动设置AirPrint。
答案 0 :(得分:11)
我有完全相同的问题,基本上mincemeat的答案解决了这个问题。但是我确实必须首先跳过几个篮球。最终它是某种文件权限问题。
我做了以下事项(注意,需要管理员访问权限):
打开终端并导航到文件夹/ private / var / tmp /
输入'whoami'以查看您的确切用户名。
假设您的用户名是'dogtest'。输入'sudo chown dogtest:admin printd'。你会得到一个警告,基本上要求你确保你知道你在做什么。
输入您的管理员密码并按Enter键。
现在您拥有了printd文件的所有权,可以随心所欲地使用它。通过键入“mv printd printd-ren”将文件重命名为其他内容。
打开iOS模拟器和打印机模拟器。
在iOS模拟器中打开Safari并转到任何网页。
点击底部中心的“分享”按钮,然后选择“打印”。
按照提示完成打印。您应该在Printer Simulator日志窗口中看到更多活动。此时,使用您的帐户权限重新创建printd文件(这很好)。
退出iOS模拟器和打印机模拟器。
在模拟器中重新运行iOS应用程序,然后重新打开打印机模拟器。
现在,您应该可以从应用程序模拟Air Print,打印输出将以PDF格式预览打开。
我希望这能为您解决问题,或者至少指出您正确的方向。祝你好运。
答案 1 :(得分:3)
尝试删除
/私人/ var / tmp中/ printd
答案 2 :(得分:2)
我让打印机模拟器停止工作,并没有给我任何错误。我尝试了不同的模拟器,重置它们,重新启动计算机,如上所述杀死printd,以及其他事情。
最后,为我修复的是改变我的网络连接:当时,我有wifi和连接到我的macbook的以太网电缆(通过霹雳) - wifi + ethernet连接到同一网络。我弹出以太网线,然后立即重新开始工作。
感谢Apple,我可以在哪里获得20分钟的时间:)