分层Cocoa WebView - 绘图顶部?

时间:2010-05-18 20:57:04

标签: objective-c cocoa webkit nsview nswindow

webview in core animation layer

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

我试过了:

[[[NSApp mainWindow] contentView] addSubview:view positioned:NSWindowAbove relativeTo:webView];

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

这只是网页浏览的限制吗?

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

我尝试过子类化NSWindow并重写canBecomeKey(返回YES)和canBecomeMain(返回NO),但窗口仍然会抢占焦点。

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

约什

1 个答案:

答案 0 :(得分:2)

有点晚了,但我对同样的问题感到头疼,问题发生两年后我仍然无法找到答案。在我的例子中,在我想通过WebView绘制的视图上设置wantsLayer = YES解决了问题。