2016-12-19 66 views
0

現在,我有幾行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

而是再次用相同NSPrintInfo的對象,創建新的對象與

[[NSPrintInfo alloc] initWithDictionary:@{}]; 
+0

感謝。通過比較,我想出了一個非常複雜的解決方案,涉及PM *函數,並認爲initWithDictionary:需要所有設置。這對我來說非常簡單而有效。 – drewpotential

相關問題