【问题标题】:How can I move the window without titleBar and fully filled with webView?如何移动没有titleBar并完全充满webView的窗口?
【发布时间】:2016-12-22 15:30:25
【问题描述】:

我正在研究类似于原生画中画的东西。

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

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

附: 对不起我的英语不好。希望目标明确

【问题讨论】:

  • @EricAya 我想移动 webView 所在的窗口。
  • @EricAya 但其中没有标题栏(它是隐藏的,window.stylemaskfullSizeContentView),它完全被 webView 填充。所以我不能只点击标题栏并拖动来移动这个窗口。你明白吗?

标签: swift macos cocoa


【解决方案1】:

您可以将 webview 子类化以捕获 -mouseDown: 事件,然后将 NSEvent 传递给 -[NSWindow performWindowDragWithEvent:]

Apple 有sample code,它使用这种技术在鼠标移动一些最小距离后开始拖动窗口,同时仍处理正常点击。如果您想支持与 webview 的基本交互,这可能是一个不错的方法。

(重写 -mouseDown: 似乎适用于 WKWebView,它可能不适用于旧版 WebView。这有点 hack,但您可以使用覆盖视图来捕获这些事件。)

【讨论】:

  • 似乎它不能直接使用它的 webView 子类。
  • 但你可能把我送到了正确的方向。我将尝试创建覆盖视图并覆盖此方法,如文档中所示
  • 是的,它按预期工作。我会将答案标记为正确,但请添加关于覆盖视图的信息。我可以编辑,但我的英语不完全是曲线
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2011-03-06
    • 2022-01-19
    • 2011-08-30
    相关资源
    最近更新 更多