分层Cocoa WebView - 在顶部绘图?

Jos*_*osh 5 cocoa webkit objective-c nsview nswindow

核心动画层中的webview

我能找到的唯一其他线程是上面的,不一定符合我的需要.是否有一种可靠的方法来简单地在webview上绘制视图?我试图在WebView上层叠常规NSView,并且它首先绘制正确,但是webview中的任何移动(滚动页面等)似乎使视图无效并产生视觉伪像.

我试过了:

[[[NSApp mainWindow] contentView] addSubview:view positioned:NSWindowAbove relativeTo:webView];
Run Code Online (Sandbox Code Playgroud)

没有运气,同样的问题 - 除非我遗漏某些东西,否则z-ordering似乎不起作用.

这只是webviews的限制吗?

我也尝试将上面的视图实现为一个窗口,它工作得更好(只是以编程方式控制窗口的位置).但是,所需的行为是用户在此窗口中输入一些文本,但不能窃取"焦点" - 即当用户点击文本字段时主窗口变为非活动状态(x - +变为灰色)在新窗口中.有什么办法可以避免吗?

我已经尝试了子类化NSWindow并重写canBecomeKey(返回YES)和canBecomeMain(返回NO),但窗口仍然窃取焦点.

编辑:我哭了:-(我无法弄清楚在webkit上的绘图方式.另一方面,我做了一个方法来强制我的应用程序的主窗口保持活动状态,即使你有一个具有键状态的弹出窗口.但是,当在弹出对话框中使用文本输入时(必须强制进入键窗口状态),它会产生意想不到的后果.退格不起作用::摇头::和鼠标事件没有分发到下面的webkit视图(对于嵌入在html中的组件的鼠标悬停).疯狂.

玩笑

小智 2

有点晚了,但我在同样的问题上碰了头,两年后我仍然找不到答案。就我而言,在我想要在 WebView 上绘制的视图上设置 WantLayer=YES 解决了问题。