【问题标题】:Scroll not visible in WebView macOS滚动在 WebView macOS 中不可见
【发布时间】:2020-06-07 14:38:29
【问题描述】:

是否可以让滚动在 macOS 的 WebView 中不可见?

实现网页浏览

我有一个从库到 Storyboard 的 WebView 我有连接

 @IBOutlet weak var webView1: WKWebView!

我在 ViewController.swift 中有:

webView1.load(URLRequest(url: URL(string: "https:www.apple.com")!))

我已经尝试过什么

我尝试了很多东西,但评论可能会有所帮助:

-iOS 解决方案不适用于 macOS:

webView1.scrollView.isScrollEnabled = false

- 有一些问题相似但不同: OS X Swift WebView disable scrolling

他问如何禁用 WebView。我问如何使它不可见。事实上,我不介意它是否被禁用。

无论如何,我已经尝试过该解决方案:

webView1.mainFrame.frameView.allowsScrolling = false;

它给了我一个错误:“WKWebView”类型的值没有成员“mainFrame”

【问题讨论】:

  • 嘿@Nrc,你用我的回答试过了吗?

标签: swift macos wkwebview


【解决方案1】:

它给了我一个错误:“WKWebView”类型的值没有成员“mainFrame”

我猜提到的线程指的是已弃用的旧版WebView,而不是较新的 WKWebView。

是否可以让滚动在 macOS 的 WebView 中不可见?

正如SO thread 中已经讨论的那样,没有用于禁用滚动功能的属性。 但是请参阅 react-native 社区的 this pull request,了解如何通过覆盖 WKWebView 类(objective-c)来规避这个问题。

这是 Swift 中的一个工作示例:

class NoScrollWebView: WKWebView {
    override func scrollWheel(with theEvent: NSEvent) {
        nextResponder?.scrollWheel(with: theEvent)
        return
    }
}

记住不要在 IBOutlet 中更改类,还要在情节提要中更改。

【讨论】:

    【解决方案2】:
    webview.enclosingScrollView?.verticalScrollElasticity = .allowed
    webview.enclosingScrollView?.horizontalScrollElasticity = .allowed
    webview.enclosingScrollView?.scrollerKnobStyle = .dark // change it
    

    一些Cocoa 控件本身具有滚动视图,例如NSCollectionView 等等。上面的行让你允许滚动启用,它使滚动可见,因为滚动已启用并且它有一些样式。

    如果你想隐藏滚动指示器,你可以使用;

    webview.enclosingScrollView?.horizontalScroller?.isHidden = true
    

    这是水平的,你也必须设置垂直。

    【讨论】:

    • 如果我知道我是否想隐藏滚动条,我只需要使用最后一行代码,对吧?
    • 是的,我在第一行添加了额外的信息,试试吧
    • 现在我使用的是带有有线鼠标的 Mac,所以我想我无法测试代码。 (默认情况下,Apple 在首选项中隐藏滚动:首选项 > 常规 > 显示滚动条)。我想我需要一个无线鼠标或触控板
    • 感谢您的支持,我目前正在使用 mac 客户端,在 NSCollectionView 中隐藏指标非常重要,我从不使用鼠标,这条线对我有用,我希望它也对你有用.
    猜你喜欢
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 2011-09-09
    • 2020-12-13
    相关资源
    最近更新 更多