gpt4 book ai didi

cocoa - 当 WebView 添加到 NSWindow 中的特定 View 时,:hover stops working. 如何修复此问题?

转载 作者:行者123 更新时间:2023-12-03 16:15:23 31 4
gpt4 key购买 nike

如果我创建一个 WebView 并将其添加到 NSThemeFrame 中,如下所示:

让 window 成为我要添加到的 NSWindow 实例:

NSView * themeFrame = window.contentView;
[themeFrame.superview addSubview:myWebView];

然后我加载的页面中元素的任何 :hover 标签都不再起作用。但是,:hover 确实出现在 mouseDown/mouseUp 上。所以也许这是一个刷新问题。我尝试在 mouseMoved: 中调用 [myWebView setNeedsDisplay:YES],但没有成功。

contentView 有什么特别之处吗?我在 NSView 上尝试了同样的操作,并在调用 setNeedsDisplay 时覆盖了它的 mouseMoved: 方法,并且 NSView 很好地处理了 mouseMove。 :hover 有什么特别之处吗?

欢迎任何想法或漫谈!

我可能遇到与 Cocoa WebView on os X not firing mouse hover events without having to click and hold left mouse key 相同的问题但那里没有答案。

最佳答案

我遇到了类似的问题,在调试和阅读WebKit的源代码后,我找到了解决方案。关键部分似乎是WebHTMLView class ,特别是方法 -[WebHTMLView _updateMouseoverWithEvent:]。检查 View 的窗口是否是关键窗口,果然,即使我在其上调用了 makeKeyWindow ,我的窗口也不是关键窗口。

我的窗口是文档窗口的子窗口,为了解决悬停问题,我创建了一个 NSWindow 子类并覆盖 isKeyWindow,如下所示:

- (BOOL)isKeyWindow
{
return [super isKeyWindow] || [[self parentWindow] isKeyWindow];
}

这使得悬停在我文档的子窗口中的 WebView 中起作用。

关于cocoa - 当 WebView 添加到 NSWindow 中的特定 View 时,:hover stops working. 如何修复此问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17057254/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com