I есть глобальное приложение, которое сообщает информацию о текущем текстовом поле. Я настроил его так, что каждый раз, когда я щелкаю мышью, я запускаю:
NSLog(@"Screen:%f,%f", [[NSScreen mainScreen] frame].size.width, [[NSScreen mainScreen] frame].size.height);
Но когда я помещаю фокус клавиатуры в текстовое поле на одном экране, а затем щелкаю мышью (неоднократно) в том же текстовом поле [[NSScreen mainScreen] frame]
часто сообщает неправильные размеры экрана! Он дает мне размеры другого дисплея.
В документах Apple говорится:
Главный экран не обязательно является тем же экраном, который содержит строка меню или имеет начало в (0, 0).Главный экран относится к экран, содержащий окно, которое в настоящее время принимает клавиатуру Мероприятия. Это главный экран, потому что именно он пользователь, скорее всего, взаимодействует.
Это говорит о том, что экран с фокусом клавиатуры всегда является главным экраном. Я даю ему фокус клавиатуры и фокус мыши. Так почему же я получаю экран другой в 50% случаев?
Это ошибка в [NSScreen mainScreen]? Должен ли я как-то форсировать пересчет? Есть ли другой способ получить размеры дисплея с фокусом клавиатуры?