Модальные дочерние окна - как листы, но не лист - PullRequest
2 голосов
/ 03 июня 2011

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

До сих пор я добавил подкласс NSPanel без границ в главное окно, которое возвращает YES из -acceptsFirstResponder,и запустить дочернее окно модально родительского.Родительское окно остается ключевым окном (так как подкласс NSPanel возвращает NO из -canBecomeKeyWindow), но родительское окно все еще имеет фокус.Я могу использовать клавиатуру для выбора кнопки, которая ничего не делает из-за модального дочернего окна.Мне нужно, чтобы дочернее окно стало первым респондентом и вызвало -makeFirstResponder, а настройка -initialFirstResponder для окна не имеет эффекта.

1 Ответ

1 голос
/ 17 ноября 2011

NSWindow имеет метод - (void)addChildWindow:(NSWindow *)childWindow ordered:(NSWindowOrderingMode)orderingMode, начиная с Mac OS X 10.2.Использование режима заказа NSWindowAbove должно быть очень близко к тому, что вы ищете.Если вы создаете дочернее окно для покрытия родителя (оставляете дочернее окно без полей), но оставляете открытую заголовок родителя - это должно делать то, что вы ищете.Возможно, вам все равно придется отключить взаимодействие с элементами управления в родительском окне, когда отображается дочерний элемент, если вы хотите именно такого поведения.

...