| NSScreen mainScreen | не обновляется, когда фокус клавиатуры / мыши переходит на другой монитор?

I есть глобальное приложение, которое сообщает информацию о текущем текстовом поле. Я настроил его так, что каждый раз, когда я щелкаю мышью, я запускаю:

NSLog(@"Screen:%f,%f", [[NSScreen mainScreen] frame].size.width, [[NSScreen mainScreen] frame].size.height);

Но когда я помещаю фокус клавиатуры в текстовое поле на одном экране, а затем щелкаю мышью (неоднократно) в том же текстовом поле [[NSScreen mainScreen] frame] часто сообщает неправильные размеры экрана! Он дает мне размеры другого дисплея.

В документах Apple говорится:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSScreen_Class/Reference/Reference.html

Главный экран не обязательно является тем же экраном, который содержит строка меню или имеет начало в (0, 0).Главный экран относится к экран, содержащий окно, которое в настоящее время принимает клавиатуру Мероприятия. Это главный экран, потому что именно он пользователь, скорее всего, взаимодействует.

Это говорит о том, что экран с фокусом клавиатуры всегда является главным экраном. Я даю ему фокус клавиатуры и фокус мыши. Так почему же я получаю экран другой в 50% случаев?

Это ошибка в [NSScreen mainScreen]? Должен ли я как-то форсировать пересчет? Есть ли другой способ получить размеры дисплея с фокусом клавиатуры?

8
задан cksubs 5 April 2012 в 22:02
поделиться