【问题标题】:Layering Cocoa WebView - Drawing on top?分层 Cocoa WebView - 在顶部绘图?
【发布时间】:2010-05-18 20:57:03
【问题描述】:

webview in core animation layer

我能找到的唯一其他线程是上面这不一定符合我的需要。有没有一种可靠的方法可以在 webview 之上简单地绘制一个视图?我尝试在 WebView 之上放置一个常规的 NSView,它一开始是正确的,但是 webview 中的任何移动(滚动页面等)似乎都会使视图无效并产生视觉伪影。

我试过了:

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

没有运气,同样的问题 - z-ordering 似乎不起作用,除非我错过了什么。

这只是 webviews 的限制吗?

我还尝试将上面的视图实现为窗口,效果更好(只是以编程方式控制窗口的位置)。然而,期望的行为是让用户在这个窗口中输入一些文本,而不是为了窃取“焦点”——即当用户点击文本字段时主窗口变为非活动状态(x - + 变为灰色)在新窗口中。有什么办法可以避免吗?

我已经尝试子类化 NSWindow 并覆盖 canBecomeKey(返回 YES)和 canBecomeMain(返回 NO),但窗口仍然会窃取焦点。

编辑:我哭了 :-( 我想不出办法绕过 webkit 的绘图。另一方面,我确实想出了一种方法来强制我的应用程序的主窗口保持活动状态尽管您有一个带有键状态的弹出窗口。但是,在弹出对话框上使用文本输入时会产生意想不到的后果(必须强制进入键窗口状态)。退格不起作用::摇头::,并且鼠标事件没有分发到下面的 webkit 视图(对于嵌入在 html 中的组件上的鼠标悬停)。Craptacular。

乔什

【问题讨论】:

  • 您是否尝试将您的视图添加为 webview 的子视图?

标签: objective-c cocoa webkit nsview nswindow


【解决方案1】:

有点晚了,但我在同一个问题上撞了头,两年后我仍然找不到答案。在我的情况下,在我想在 WebView 上绘制的视图上设置 wantLayer=YES 解决了这个问题。

【讨论】:

    猜你喜欢
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    相关资源
    最近更新 更多