如何移动没有标题栏且完全填充WebView的窗口?

6

我正在开发类似于本地画中画的功能。

My window

我想移动这个窗口,但是无法移动,因为它没有标题栏(被隐藏了,并且 window.stylemaskfullSizeContentView),并且它完全填充了 webView。

所以,我不能只是点击标题栏并拖动来移动这个窗口。

P.S. 对不起我的英语不好,我希望目标清晰明了。


@EricAya 我想要移动包含 webView 的窗口。 - Роман Елизаров
@EricAya,但是这个窗口没有标题栏(它被隐藏了,window.stylemaskfullSizeContentView),而且它完全填充了 webView。所以我不能只是点击标题栏并拖动来移动这个窗口。你明白吗? - Роман Елизаров
2个回答

7
你可以创建一个webview的子类以捕获-mouseDown:事件,然后将NSEvent传递给-[NSWindow performWindowDragWithEvent:]
苹果提供了样例代码使用此技术在鼠标移动一定距离后开始窗口拖拽,同时仍可处理正常点击。如果您想要支持与webview的基本交互,这可能是一个不错的方法。
(覆盖 -mouseDown: 看起来适用于WKWebView,但可能不适用于旧版WebView。这有点 hack,但您可以使用一个覆盖视图来替代捕获这些事件。)

似乎直接将其子类化为webView是行不通的。 - Роман Елизаров
https://dev59.com/PlXTa4cB1Zd3GeqP0VGv - Роман Елизаров
但你可能已经把我指向了正确的方向。我会尝试创建覆盖视图并按照文档中所示重写此方法。 - Роман Елизаров
是的,它按预期工作。我会将答案标记为正确,但请添加有关叠加视图的信息。我可以编辑,但我的英语并不十分完美。 - Роман Елизаров

0

如果您删除带有highlight(true)(第18行)和self.highlight(false)(第40行)的两行代码,则示例代码也适用于WKWebView。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接