У меня есть глобальное приложение, которое сообщает информацию о текущем текстовом поле. Я настроил его так, что каждый раз, когда я щелкаю мышью, я запускаю:
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]? Нужно ли как-то форсировать пересчет? Есть ли другой способ получить размеры дисплея с фокусом клавиатуры?