我有一个应用程序在我调用 NSPrintOperation 时挂起。
我有一个像这样创建一个单独的类(UIView)的视图:
PBPrintImage *printImage = [[PBPrintImage alloc] init];
printImage.image = finalImage;
[printImage printWithNoPanel:self];
然后在 PBPrintImage 里面我有以下方法:
- (void)printWithNoPanel:(id)sender {
CGSize picSize = CGSizeMake(300, 446);
NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
NSRect imageRect = NSRectFromCGRect(CGRectMake(0, 0, picSize.width, picSize.height));
NSImageView *imageView = [[NSImageView alloc] initWithFrame:imageRect];
[imageView setImage:image];
NSPrintOperation *op = [NSPrintOperation printOperationWithView:imageView printInfo:printInfo];
[op setCanSpawnSeparateThread:YES];
[op setShowsPrintPanel:NO];
[op runOperation];
}
如果我不称它为应用程序,则该应用程序可以正常工作。我试过用和不用setCanSpawnSeparateThread:
. 如何设置它以使其必须位于单独的线程中,从而不会弄乱应用程序的常规流程?
它确实打印,但这只是工作的一半。