我使用AirPrint方法显示了UIButton中的presentFromRect选项,一切都如出一辙,但是如果我继续按下按钮足够快的速度,我的应用程序就会崩溃,这可能是因为弹出程序没有发布。
在启用ARC的情况下,我使用Xcode 4.2。
任何帮助都会很好!
更新2:问题仅发生在iOS 5模拟器上,iPad 4.3模拟器按预期工作。
更新:
真正的问题是:
*终止应用程序由于非正常的异常'NSGenericException',原因:'-UIPopoverController dealloc到达时,波普仍然是可见的‘。
以下是代码:
这里我称之为我的方法:
PrintUtils* printUtils = [[PrintUtils alloc] init];
printUtils.delegate = self;
[printUtils setHeader:@"Header"];
[printUtils print:self.webView fromRect:self.myButton.frame inView:self.menuView];我的方法:
- (void)print:(UIWebView *)webView fromRect:(CGRect)rect inView:(UIView *)view
{
printController = [UIPrintInteractionController sharedPrintController];
[printController setDelegate:self];
if(!printController){
NSError* error = [[NSError alloc] initWithDomain:@"Print unavailable!" code:0 userInfo:nil];
[self showError:error];
return;
}
UIPrintInteractionCompletionHandler completionHandler =
^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if(!completed && error){
[self showError:error];
}
};
UIPrintInfo* printInfo = [UIPrintInfo printInfo];
[printInfo setJobName:header];
[printInfo setDuplex:UIPrintInfoDuplexLongEdge];
[printInfo setOutputType:UIPrintInfoOutputGeneral];
UIPrintFormatter* viewFormatter = [webView viewPrintFormatter];
CustomPrintPageRenderer *pageRenderer = [[CustomPrintPageRenderer alloc] init];
[pageRenderer setJobTitle:[printInfo jobName]];
UIFont* font = [UIFont fontWithName:@"Helvetica" size:HEADER_FOOTER_TEXT_HEIGHT];
CGSize titleSize = [pageRenderer.jobTitle sizeWithFont:font];
pageRenderer.headerHeight = pageRenderer.footerHeight = titleSize.height + HEADER_FOOTER_MARGIN_PADDING;
[pageRenderer addPrintFormatter:viewFormatter startingAtPageAtIndex:0];
[printController setPrintPageRenderer:pageRenderer];
[printController setPrintInfo:printInfo];
[printController setPrintFormatter:viewFormatter];
[printController setShowsPageRange:YES];
[printController presentFromRect:rect inView:view animated:YES completionHandler:completionHandler];
}我试图修复实现UIPrintInteractionControllerDelegate方法的问题:
- (void)printInteractionControllerWillPresentPrinterOptions:(UIPrintInteractionController *)printInteractionController
{
if (visible) {
[printController dismissAnimated:YES];
}
}发布于 2012-02-28 08:18:45
你想过这事吗?问题是你没有检查这个设备是iPad还是iPhone。iPhone不支持presentFromRect,但iPad支持。这就是为什么当您在iPhone上运行它时,您获得了错误的访问权限。
下面是你需要做的事情:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[printController presentFromFromBarButtonItem:sender animated:YES completionHandler:completionHandler];
} else {
[printController presentAnimated:YES completionHandler:completionHandler];
}https://stackoverflow.com/questions/8025399
复制相似问题