Слои Какао WebView - Рисование сверху?
веб-просмотр в основном анимационном слое
Единственная другая тема, которую я могу найти, - это выше, которая не обязательно соответствует моим потребностям. Есть ли надежный способ просто нарисовать вид поверх веб-просмотра? Я попытался наложить обычный NSView поверх WebView, и он сначала рисует прямо, но любое движение в веб-просмотре (прокрутка страницы и т. Д.), По-видимому, лишает законной силы представление и создает визуальные артефакты.
Я пробовал:
[[[NSApp mainWindow] contentView] addSubview:view positioned:NSWindowAbove relativeTo:webView];
Не повезло, одни и те же проблемы - z-упорядочивание не работает, если я что-то упустил
Это просто ограничение веб-просмотров?
Я также попытался реализовать вид выше как окно, которое работало намного лучше (просто контролировал расположение окна программно). Тем не менее, желаемое поведение заключается в том, чтобы пользователь вводил некоторый текст в это окно, но не для того, чтобы он крал "фокус" - т.е. главное окно становится неактивным (x - + становится серым), когда пользователь нажимает на текстовое поле. в новом окне. Есть ли способ избежать этого?
Я попытался создать подкласс NSWindow и переопределить canBecomeKey (возвращать YES) и canBecomeMain (возвращать NO), но окно все еще крадет фокус.
РЕДАКТИРОВАТЬ: Я плачу:-(Я не могу придумать способ обойти рисунок через webkit. С другой стороны, я нашел способ заставить главное окно моего приложения сохранять активное состояние, даже если у вас есть всплывающее окно с состоянием ключа. Однако оно имеет непредвиденные последствия при использовании ввода текста во всплывающем диалоговом окне (которое должно быть принудительно переведено в состояние окна ключа). Backspace не работает:: shakes head::, и события мыши не распространяются в представлении веб-набора ниже (для указателей мыши на компонентах, встроенных в html).
мистифицировать
1 ответ
Немного поздно, но я ударился головой о той же проблеме, и через два года после вопроса я все еще не мог найти ответ. В моем случае, установка wantLayer=YES в представлении, которое я хотел нарисовать поверх WebView, решило проблему.