2016-12-19 4 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

 Смежные вопросы

  • Нет связанных вопросов^_^