Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c UIPrintInteractionController和对UIViewController开始/结束外观转换的不平衡调用_Objective C_Ios9 - Fatal编程技术网

Objective c UIPrintInteractionController和对UIViewController开始/结束外观转换的不平衡调用

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模拟器上运行应用

我一直在使用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处创建一个符号断点,以便在调试器中捕获该断点

我试过:

  • 使用计时器延迟presentAnimated方法以及异步调度
  • 关闭动画
  • 仅当([self isViewLoaded])时调用presentAnimated
  • 使用UIMarkupTextPrintFormatter代替NSData(无PDF文件)
  • 这似乎是因为iOS 9中新的打印预览

    应用程序代码:

    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