gpt4 book ai didi

objective-c - NSPrintOperation 挂起应用程序

转载 作者:行者123 更新时间:2023-12-03 13:13:45 24 4
gpt4 key购买 nike

我有一个应用程序,每当我调用 NSPrintOperation 时就会挂起。

我有一个 View ,它创建了一个单独的类(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: .我如何设置它以便它必须在一个单独的线程中,因此不会弄乱应用程序的常规流程?

它确实可以打印,但这只是工作的一半。

最佳答案

应用程序应该显示一个模态打印对话框(并启动一个模态运行循环),所以我不会称它为“挂起”。一旦您点击“确定”或“取消”,它就会返回到正常的主线程流程。

至于setCanSpawnSeparateThread:问题,它仅在打印对话框显示为工作表时才会启动,因此您需要像这样调用它:`[op runOperationModalForWindow:window delegate:self didRunSelector:@selector(_printOperationDidRun:success:contextInfo:) contextInfo:nil]

关于objective-c - NSPrintOperation 挂起应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com