运行时更新默认打印机名称

时间:2016-12-19 22:56:48

标签: macos cocoa printing runtime

现在,我有几行ObjC来轮询正在设置的默认打印机,在我的应用程序中,它应该使用新打印机的名称更新标签,但到目前为止它还没有工作

在我的控制器中,我有以下内容:

[self updatePrinter];

这称之为微小的方法:

- (void)updatePrinter {
    NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
    self.printerName.stringValue = printInfo.printer.name;

    NSLog(@"Printer: %@", printInfo.printer.name);
}

当它到达我的方法时(在viewDidLoad中),它会正确填充标签printerName

我尝试添加一个计时器来轮询新的打印机默认设置:

[NSTimer scheduledTimerWithTimeInterval:2.0
                                 target:self
                               selector:@selector(updatePrinter)
                               userInfo:nil
                                repeats:YES];

这样运行正常,但是如果我打开系统首选项并更改默认打印机,它会继续打印旧默认值的名称。如果我重新启动应用程序,它的行为会有所不同。

如何在运行时将新默认值反映在我的应用程序中?

1 个答案:

答案 0 :(得分:1)

不要再次使用相同的NSPrintInfo对象,而是使用

创建一个新对象
[[NSPrintInfo alloc] initWithDictionary:@{}];