Objective c UIPrintInteractionController和对UIViewController开始/结束外观转换的不平衡调用
我一直在使用UIPrintInteractionController,该应用程序在iOS 8中运行良好,但从iOS 9开始,我在尝试打印时不断记录错误,并且不一致。我在UIPrintInteractionController的在线上找到了一个基本的AirPrint应用程序示例,它有相同的问题,这些问题是: 1-在所有模拟器(仅限iOS 9)和我的6S设备上运行应用程序时,我会记录以下内容: 对UIViewController开始/结束外观转换的调用不平衡 2-在5s或6sPlus模拟器上运行应用程序时,我会得到上述错误加上: 2016-01-04 14:15:20.087 AirPrint Test[76720:38159873]未定义UICollectionViewFlowLayout的行为,因为: 2016-01-04 14:15:20.087 AirPrint Test[76720:38159873]项目高度必须小于UICollectionView的高度减去部分插入的顶部和底部值,再减去内容插入的顶部和底部值 2016-01-04 14:15:20.088 AirPrint Test[76720:38159873]相关UICollectionViewFlowLayout实例为,并附加到;层=;contentOffset:{0,0};contentSize:{0,0}>集合视图布局: 2016-01-04 14:15:20.088 AirPrint测试[76720:38159873]在UICollectionViewFlowLayoutBreakForInvalidSizes处创建一个符号断点,以便在调试器中捕获该断点 2016-01-04 14:15:20.093 AirPrint测试[76720:38159873]未定义UICollectionViewFlowLayout的行为,因为: 2016-01-04 14:15:20.093 AirPrint Test[76720:38159873]项目高度必须小于UICollectionView的高度减去部分插入的顶部和底部值,再减去内容插入的顶部和底部值。 2016-01-04 14:15:20.094 AirPrint Test[76720:38159873]相关UICollectionViewFlowLayout实例为,并附加到;层=;contentOffset:{0,0};contentSize:{320250}>集合视图布局: 2016-01-04 14:15:20.094 AirPrint Test[76720:38159873]在UICollectionViewFlowLayoutBreakForInvalidSizes处创建一个符号断点,以便在调试器中捕获该断点 我试过:Objective c UIPrintInteractionController和对UIViewController开始/结束外观转换的不平衡调用,objective-c,ios9,Objective C,Ios9,我一直在使用UIPrintInteractionController,该应用程序在iOS 8中运行良好,但从iOS 9开始,我在尝试打印时不断记录错误,并且不一致。我在UIPrintInteractionController的在线上找到了一个基本的AirPrint应用程序示例,它有相同的问题,这些问题是: 1-在所有模拟器(仅限iOS 9)和我的6S设备上运行应用程序时,我会记录以下内容: 对UIViewController开始/结束外观转换的调用不平衡 2-在5s或6sPlus模拟器上运行应用
viewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UIPrintInteractionControllerDelegate>
@property (strong, nonatomic) IBOutlet UITextView *textView;
- (IBAction)printButtonPressed:(UIButton *)sender;
@end
我也有同样的问题。你在这期间找到解决办法了吗?我最近一直在处理完全相同的问题。我发现,当我在模拟器中运行或者在实际设备(iPhone7 plus)上使用Xcode进行调试时,这个问题会一直出现。在我的例子中,我的项目部署目标是iOS 9.0,我运行的是iOS 10。我不确定这是否是一个因素。这不是一个解决方案,但简而言之,我发现如果我构建到设备上,然后正常运行应用程序,而不是在Xcode中调试,它就会工作。很奇怪。
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)printButtonPressed:(UIButton *)sender{
NSString *path = [[NSBundle mainBundle] pathForResource:@"AirPrintTest" ofType:@"pdf"];
NSData *myData = [NSData dataWithContentsOfFile: path];
UIPrintInteractionController *printDocController = [UIPrintInteractionController sharedPrintController];
if(printDocController && [UIPrintInteractionController canPrintData: myData] ) {
printDocController.delegate = self;
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
printInfo.jobName = [path lastPathComponent];
printInfo.duplex = UIPrintInfoDuplexLongEdge;
printDocController.printInfo = printInfo;
printDocController.showsPageRange = YES;
printDocController.printingItem = myData;
void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printDocController, BOOL completed, NSError *error) {
//self.content = nil;
if (!completed && error) {
NSLog(@"FAILED! due to error in domain %@ with error code %ld", error.domain, (long)error.code);
}
};
[printDocController presentAnimated:YES completionHandler:completionHandler];
}
}
@end