Как отобразить пользовательский вид модально в существующем окне? - PullRequest
0 голосов
/ 11 июня 2018

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

UI with modal not shown

UI with modal shown

Обратите внимание, что пользователь должен видеть только одно окно.То есть модал должен быть вложен в главное окно.

У меня очень мало опыта работы с AppKit и Cocoa в целом.До сих пор мой подход заключался в структурировании моего пользовательского интерфейса следующим образом:

Root region (NSView)
    -> MainRegion (NSView)
    -> ModalRegion (NSView; toggle hidden and animate the left edge)

, а затем добавление подпредставлений в MainRegion и ModalRegion для отображения содержимого.Проблема в том, что ModalRegion не воспринимает входные события.

Какой способ AppKit создать такой интерфейс?В основном мне просто нужно знать, как должна формироваться иерархия представления и как блокировать / поглощать входные события.Я думаю, что могу понять анимацию сам.Кроме того, приложение предназначено для MacOS 10.8+, но ответы на более свежие версии также будут полезны.

1 Ответ

0 голосов
/ 14 июня 2018

Это не совсем macOS как пользовательский интерфейс, но есть два подхода, которые вы можете использовать.В обоих случаях вы бы использовали прозрачный вид, чтобы закрыть главное окно и отклонить модальный вид в случае щелчка мышью.Если вам нужна тень, перекрывающая главное окно, как показано в макете, вам нужно использовать окно, прикрепленное к основному окну, в качестве дочернего окна.Если это не так, было бы достаточно работать с представлением, которое прикреплено к представлению содержимого главного окна.

Всего наилучшего.

...