当 WebView 添加到 NSWindow 中的特定视图时,:hover 停止工作。我怎样才能解决这个问题?
Posted
技术标签:
【中文标题】当 WebView 添加到 NSWindow 中的特定视图时,:hover 停止工作。我怎样才能解决这个问题?【英文标题】:When WebView is added to a specific view in NSWindow, :hover stops working. How can I fix this? 【发布时间】:2013-06-12 03:30:09 【问题描述】:如果我创建一个 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 有同样的问题,但那里没有答案。
【问题讨论】:
这个问题有进展吗? 【参考方案1】:我遇到了类似的问题,在调试和阅读 WebKit 的源代码后,我找到了解决方案。关键部分似乎是WebhtmlView class,特别是方法-[WebHTMLView _updateMouseoverWithEvent:]
。检查视图的窗口是否是关键窗口,果然,我的窗口不是关键窗口,即使我在其上调用了makeKeyWindow
。
我的窗口是文档窗口的子窗口,为了解决悬停问题,我创建了一个 NSWindow
子类并像这样覆盖 isKeyWindow
:
- (BOOL)isKeyWindow
return [super isKeyWindow] || [[self parentWindow] isKeyWindow];
这使得悬停在我文档的子窗口中的 WebView 中起作用。
【讨论】:
以上是关于当 WebView 添加到 NSWindow 中的特定视图时,:hover 停止工作。我怎样才能解决这个问题?的主要内容,如果未能解决你的问题,请参考以下文章
NSLayoutConstraint 防止 NSWindow 调整大小
使用 NSDocument 和 NSWindow 跟踪 NSTextView 的变化
在使用情节提要和 swift 时从 xib 打开 NSWindow